ホームページ >バックエンド開発 >PHPの問題 >php ftp_put が失敗した場合の対処方法

php ftp_put が失敗した場合の対処方法

藏色散人
藏色散人オリジナル
2020-07-24 11:12:153550ブラウズ

php ftp_put エラーの解決策: まず「Upload/Driver/Ftp.class.php」を開き、次に「ftp_pasv($this->link,true);」メソッドを使用してパッシブ モードに切り替えます。最後に、クライアントにファイルを再アップロードするだけです。

php ftp_put が失敗した場合の対処方法

推奨: 「PHP チュートリアル

PHP アップロード FTP ドライバーの ftp_put 関数のアップロード失敗の問題

2 台のサーバー (FTP サーバー用と Web サーバー用に 1 台)。

thinkphp3.2のUploadクラスを使用し、アップロードFTPドライバーを使用しているのですが、毎回ファイル保存に失敗すると表示されます。

答えを探しています。非同期と同期の両方をテストしましたが、どちらも機能しません。リモートの /tmp/ ディレクトリと ftp ディレクトリにも 777 のアクセス許可があります。

Thinkphp は非常に成熟しているはずです。その後、説明モードを含むいくつかの答えを公式ドキュメントで見つけました。

ftp サーバー アクティブ モード、ftp サーバー パッシブ モード、私は ftp_pasv($this-> ;link,true); パッシブ モードに切り替えると、クライアントはファイルをスムーズにアップロードできるようになります。

これが解決策です

Upload/Driver/Ftp.class.php sava function

public function save($file, $replace=true) {
        $filename = $file['rootPath']. $file['savepath'] . $file['savename'];
        /* 不覆盖同名文件 */
        // if (!$replace && is_file($filename)) {
        //     $this->error = '存在同名文件' . $file['savename'];
        //     return false;
        // }
        ftp_pasv($this->link,true);
        ftp_pwd($this->link);
        $filename=$file['savename'];
        if (!ftp_put($this->link, $filename, $file['tmp_name'],FTP_ASCII)) {
            $this->error = '文件上传FTP错误!';
            return false;
        }
        return true;
    }

以上がphp ftp_put が失敗した場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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