[解決済み] move_uploaded_file は、"failed to open stream: Permission denied" というエラーが出る
質問
CentOSのApache 2.2とPHP 5.3でアップロードディレクトリを設定しようとすると、このエラーが何度も出ます。
php.iniで。
upload_tmp_dir = /var/www/html/mysite/tmp_file_upload/
httpd.confにある。
Directory /var/www/html/mysite/tmp_file_upload/>
Options -Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory /var/www/html/mysite/images/>
Options -Indexes
</Directory>
CentOSのディレクトリのパーミッションです。
drwxrwxr-x 2 root root 4096 Nov 11 10:01 images
drwxr-xr-x 2 root root 4096 Nov 12 04:54 tmp_file_upload
何をやっても、ファイルをアップロードするときにPHPからこのエラーが出続けているのです。
Warning: move_uploaded_file(images/robot.jpg): ストリームを開くのに失敗しました。/var/www/html/mysite/process.php のライン78でパーミッションが拒否されました。
警告:move_uploaded_file(): Unable to move '/tmp/phpsKD2Qm' to 'images/robot.jpg' in /var/www/html/mysite/process.php on line 78
ご覧の通り、アップロードファイルに関するphp.iniファイルからの設定は取得できていません。
私はここで何を間違えているのでしょうか?
どうすればいいですか?
これは
images
と
tmp_file_upload
によってのみ書き込みが可能です。
root
のユーザーです。アップロードを成功させるためには、これらのフォルダの所有者を httpd プロセスの所有者と同じにするか、グローバルに書き込み可能にする必要があります (バッドプラクティス)。
-
apacheのプロセスオーナーを確認します。
$ps aux | grep httpd
. 最初のカラムはオーナーで、典型的には次のようになります。nobody
-
のオーナーを変更します。
images
とtmp_file_upload
になるようにnobody
またはステップ1で見つけた所有者。$sudo chown nobody /var/www/html/mysite/images/ $sudo chown nobody /var/www/html/mysite/tmp_file_upload/
-
chmod
images
とtmp_file_upload
を、必要に応じて所有者が書き込み可能にするようにしました [すでに設定されているようです]。Dmitry Teplyakovの回答で言及されています。$ sudo chmod -R 0755 /var/www/html/mysite/images/ $ sudo chmod -R 0755 /var/www/html/mysite/tmp_file_upload/
-
なぜこのような動作になるのか、詳しくはマニュアルをご覧ください。 http://php.net/manual/en/ini.core.php#ini.upload-tmp-dir について述べていることに注意してください。
open_basedir
ディレクティブを使用します。
関連
-
[解決済み] [Solved] Fatal error: メンバ関数bind_param()のbooleanに対する呼び出し [重複] [重複
-
[解決済み] PHP & MySQL: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given [重複] PHP & MySQL: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given.
-
[解決済み】空の配列要素を削除する
-
[解決済み】「初期通信パケットの読み込み」でMySQLサーバーに接続できなくなり、システムエラーになる。0
-
[解決済み】新しいPHPMailerはPHPMailerAutoload.phpが必要?
-
[解決済み】XAMPPエラー: www.example.com:443:0 サーバー証明書に、サーバー名と一致するIDが含まれていません。
-
[解決済み】 libapache2-mod-php7 パッケージが見つからない。
-
[解決済み】警告。数値でない値に遭遇しました
-
[解決済み】Fatal error: mysqli_result 型のオブジェクトは使用できません [終了] 。
-
[解決済み] 検索」からすべての「permission denied」メッセージを除外するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] Fatal error: メンバ関数bind_param()のbooleanに対する呼び出し [重複] [重複
-
[解決済み】予期せぬ例外。SQLSTATE[HY000] [1045] Access denied for user ****@'localhost' (using password: YES)
-
[解決済み】++と*+の意味は何ですか?
-
[解決済み】Apache + PHPで「ヘッダの前にスクリプトの出力が終了する」件
-
[解決済み】子テーマのCSSが親テーマをオーバーライドしない
-
[解決済み】警告。数値でない値に遭遇しました
-
[解決済み】既に開始されているPHPセッション【重複あり
-
[解決済み】chromeの「net : Failed to load resource: net::ERR_SPDY_PROTOCOL_ERROR" は何がおかしいのか?
-
[解決済み】In_arrayが動作しない。
-
[解決済み】phpのシンタックスエラー、予期しないT_IFエラーを修正する方法は?[クローズド]。