ホームページ >バックエンド開発 >PHPチュートリアル >FTP はリモート サーバーにローカルでファイルをアップロードできますが、サーバー上に配置すると機能しません。

FTP はリモート サーバーにローカルでファイルをアップロードできますが、サーバー上に配置すると機能しません。

WBOY
WBOYオリジナル
2016-06-13 12:22:391294ブラウズ

FTP はローカルのリモート サーバーにファイルをアップロードできますが、サーバー上に配置すると機能しません
Web サイトで購入した Wanwang 仮想ホストは php.ini を変更できず、.htaccess を使用してサイズを変更する方法もありませんしたがって、10M を超えるファイルをアップロードするには、ftp を使用する必要があります。
$ftp_server= "xxxx.xxxx.com";
$ftp_user_name= "xxxx";
$ftp_user_pass= "xxxxx";
$local_file = "D:/Lyb_0/zmsgx.mp4"; //ローカル ファイル
$server_file = "htdocs/videos/zmsgx.mp4";アップロードするファイルの
$conn_id = ftp_connect($ftp_server); //FTP に接続します
$login_result = ftp_login($conn_id,$ftp_user_name,$ftp_user_pass) または die("ログイン エラー");ログイン
$fp=fopen($local_file, "r");
ftp_pasv($conn_id, true) //パッシブモード送信を有効にする
//パラメータをアップロードします
if(ftp_fput($) conn_id,$server_file,$fp,FTP_BINARY)) {
echo "$server_filen のアップロードに成功しました";
}else{
echo "$filen のアップロード中に問題が発生しました";
}
//接続を閉じます
ftp_close($conn_id) ;
fclose($fp);

ただし、このコードはローカルでのみ機能し、fopen($local_file,) に配置できます。 r"); ローカル ファイルを開けません。どうやって解決すればいいでしょうか?
------ソリューションのアイデア----------------------
最初に fopen が利用可能かどうかを確認します
サーバー上のいわゆる「ローカル ファイル」とは、サーバー上のファイルを指します

したがって、ftp を使用してアップロード制限を回避するのは非現実的です
------解決策のアイデア -----------------------
$local_file

このローカル ファイルを取得できません。
------ソリューションのアイデア----------------------
class Ftp{

public $ftpconn;
public static $_instance = array();
private function __construct($host,$username,$password) {
$this->ftpconn = ftp_connect($host);
$this->login($username, $password);
}
public function login($username, $password){
ftp_login($this->ftpconn, $username, $password);
}
public static function getInstance($host,$username,$password){
$key = md5($host.'-'.$username.'-'.$password );
if(!isset(self::$_instance[$key])
------解決策のアイデア----- ------
!(self::$_instance[$key]instanceof self)){
$password);
}
return self::$_instance[$ key];
}
public function __clone(){
trigger_error('このクラスはクローン作成を禁止しています',E_USER_ERROR);
}
public function __destruct() {
ftp_close($ this->ftpconn);
}
public function nlist($dir){
$filelist = ftp_n list($ this->ftpconn, $dir);
return $filelist;
}

//カレントディレクトリの親ディレクトリを切り替える
public function cdup(){
return ftp_cdup( $this->ftpconn);
}
/ /FTP サーバー上の現在のディレクトリを変更します
public function chdir($dir){
return @ftp_chdir($this->ftpconn, $ dir);
}
//ファイル権限を変更します
public function chmod ($dir,$mode){
return ftp_chmod($this->ftpconn, $mode, $dir);
}
// ファイルを削除します
public function delete($filename){
return ftp_delete($this->ftpconn, $filename);
}
//FTP コマンドの実行要求 (true, false)
public function exec($command){
return ftp_exec($this->ftpconn,$command);
}
//FTP サーバーからファイルをダウンロードし、ローカルで開いているファイルに保存しますMedium
//モード送信モードは、(テキスト モード) FTP_ASCII または (バイナリ モード) FTP_BINARY のいずれか 1 つだけです。
public function fget ($handle,$remote_file,$mode,$resumepos = 0){
return ftp_fget($this->ftpconn,$handle,$remote_file,$mode,$resumepos);
}
//開いているファイルを FTP サーバーにアップロードします
//モード転送モードは、(テキスト モード) FTP_ASCII または (バイナリ モード) FTP_BINARY のいずれか 1 つだけです。
public function fput ($remote_file,$handle,$mode,$resumepos = 0){
return ftp_fput($this->ftpconn,$remote_file,$handle,$mode,$resumepos);
}
//現在の FTP 接続のさまざまなオプション設定を返します
public function get_option($option=FTP_TIMEOUT_SEC){
return ftp_get_option($this->ftpconn,$option);
}
//FTP サーバーからファイルをダウンロードします
public function get($local_file,$remote_file,$mode,$resumepos=0){
return ftp_get($this->ftpconn,$ local_file, $remote_file ,$mode,$resumepos);
}
//指定されたファイルの最終変更時刻を返します
public function mdtm ($remote_file){
return ftp_mdtm ($this->gt; ftpconn,$remote_file);
}
//新しいディレクトリを作成します
public function mkdir($dir,$directory){
$this->chdir($dir);
return @ftp_mkdir($this->ftpconn,$directory);
}
//ファイルを継続的に取得/送信する(ノンブロッキング)
public function nb_ continue(){
return ftp_nb_ continue($ this ->ftpconn);
}
//FTP サーバーからファイルを取得し、開いているファイルに書き込みます (ノンブロッキング)
public function nb_fget ($handle,$remote_file,$mode , $resumepos = 0){
return ftp_nb_fget ($this->ftpconn,$handle,$remote_file,$mode,$resumepos);
}
//開いているファイルからファイルを保存しますFTP サーバー (ノンブロッキング)
public function nb_fput ($remote_file,$handle,$mode,$resumepos = 0){
return ftp_nb_fput ($this->ftpconn,$remote_file,$handle,$ mode ,$resumepos);
}
//FTP サーバーからファイルを取得し、ローカル ファイルに書き込みます (ノンブロッキング)
public function nb_get ($local_file,$remote_file,$mode,$resumepos =0 ){
return ftp_nb_get ($this->ftpconn,$local_file,$remote_file,$mode,$resumepos);
}
//ファイルを FTP サーバーに保存します (ノンブロッキング)
public function nb_put ($remote_file,$local_file,$mode,$resumepos=0){
return ftp_nb_put ($this->ftpconn,$ Remote_file ,$local_file,$mode,$resumepos);
}
//現在の FTP パッシブ モードがオンになっているかどうかを返します
public function pasv($pasv){
return ftp_pasv($this ->ftpconn ,$pasv);
}
//FTP サーバーにファイルをアップロード
public function put ($remote_file,$local_file,$mode,$resumepos=0){
return ftp_put ($this- >ftpconn,$remote_file ,$local_file,$mode,$resumepos);
}
//現在のディレクトリ名を返します
public function pwd (){
return ftp_pwd ( $this->ftpconn);
}
//任意のコマンドをFTPサーバーに送信します
public function raw ($command){
return ftp_raw ($this->ftpconn,$ command);
}
//指定されたディレクトリ内のファイルの詳細なリストを返します
public function rawlist($directory){
return ftp_rawlist($this->ftpconn,$directory);
}
//FTP サーバー上のファイル名またはディレクトリ名を変更します
public function rename($oldname,$newname){
return ftp_rename($this->ftpconn,$oldname, $ newname);
}
//FTP サーバー上のディレクトリを削除します
public function rmdir($directory){
return ftp_rmdir($this->ftpconn,$directory);
}
//さまざまな FTP ランタイム オプションをそれぞれ設定します
public function set_option ($option,$value){
return ftp_set_option ($this->ftpconn,$option,$value);
}
//サーバーにレポート SITE コマンドを送信
public function site ($cmd){
return ftp_site ($this->ftpconn,$cmd);
}
//Return指定されたファイルのサイズ
public function size ($remote_file){
return ftp_size ($this->ftpconn,$remote_file);
}
// 安全な SSL-FTP 接続を開きます
public function ssl_connect($host){
$this->ftpconn = ftp_ssl_connect($host);
}
//リモート FTP サーバーのオペレーティング システムの種類を返します
public function systype (){
return ftp_systype ($this ->ftpconn);
}
}

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。