1

私はPHP n00bですが、この優れたtutの指示に従いました:

PHP Tizag ファイル アップロード チュートリアル

ただし、これはデフォルトの組み込み Apache を実行している私の Mac (OSX 10.8) では完全に機能しましたが、失敗し、CentOS 6 ボックスでは機能しません。Apache ログを見ると、次のようになります。

failed to open stream: No such file or directory

/var/www/htmlのルートにある "uploads" フォルダーのアクセス許可は777に設定されています (Mac では /Library/Webserver/Documents です)。

[Tue Apr 30 13:05:11 2013] [error] [client (My IP Address)] PHP Warning:  move_uploaded_file(uploads/Today notes.txt): failed to open stream: No such file or directory in /var/www/html/test/uploads3.php on line 8, referer: ht*p://serverip.myserver.com/test/form4.html

[Tue Apr 30 13:05:11 2013] [error] [client (my IP address)] PHP Warning:  move_uploaded_file(): Unable to move '/tmp/phpc8AGo8' to 'uploads/Today notes.txt' in /var/www/html/test/uploads3.php on line 8, referer: ht*p://serverip.myserver.com/test/form4.html

これを適切に機能させるために、PHP または Apache の設定が不足していますか?

よろしくお願いします。

4

4 に答える 4

1

あなたの質問によると、uploadsフォルダは にありますが、存在しない/var/www/html場所にアップロードしようとしているというエラーメッセージが表示されます/var/www/html/test/uploads

正しいパスにアップロードするようにコードを修正するか、テスト ディレクトリにアップロード ディレクトリを作成する必要があります。

于 2013-04-30T12:30:37.807 に答える
0

お使いのオペレーティング システムのドキュメントを参照してください。CentOS 6 には追加のセキュリティ構成があり、PHP が tmp フォルダーにアクセスできない可能性があります。

そのフォルダーに Apache HTTPD のアクセスを許可します (または、一時アップロード パスを、SELinux 構成によって Apache HTTPD がアクセスを許可されているフォルダーに変更します)。また、SELinux ログを監査して、どの設定がディレクトリへのアクセスを正確に妨げているかを調べます。

たとえば、PHP を Apache モジュールとして実行していない場合、他のプロセス (PHP (F)CGI バイナリなど) で保護されたファイル システム リソースを許可する必要がある場合があります。

于 2013-04-30T12:36:25.777 に答える
0

これで問題が解決することを願っています

最初にフォルダーが存在するかどうかを確認し、存在しない場合は次のように作成します

if(!is_dir('uploads/Today')){
   mkdir("uploads/Today", 0755);
}
于 2013-04-30T13:00:25.383 に答える