[解決済み】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
ディレクティブを使用します。
関連
-
[解決済み】接続の取得に失敗しました: php_network_getaddresses: getaddrinfo failed: 名前またはサービスが不明
-
[解決済み】PHP定数「PHP_EOL」はいつ使うの?
-
[解決済み】php, mysql - データベースへの接続数が多すぎるエラー
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: パラメータが定義されていません
-
[解決済み】メッセージ。Trying to access array offset on value of type null [重複]配列のオフセットにアクセスしようとしています。
-
[解決済み】警告。数値でない値に遭遇しました
-
[解決済み】PDOException SQLSTATE[HY000] [2002] そのようなファイルまたはディレクトリがありません。
-
[解決済み】phpのシンタックスエラー、予期しないT_IFエラーを修正する方法は?[クローズド]。
-
[解決済み] Forbidden :このサーバーの /phpmyadmin にアクセスする権限がありません。
-
[解決済み] 検索」からすべての「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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Weird PHP error: 'Can't use function return value in write context'.
-
[解決済み】不明なMySQLサーバーのホスト
-
[解決済み】変な電話番号を生成するフェイカー?
-
[解決済み】Xampp ローカルホスト/ダッシュボード
-
[解決済み】foreach()に与えられた引数が無効です。)
-
[解決済み】count()パラメータは配列かlaravelのcountableを実装したオブジェクトでなければならない
-
[解決済み】PHPのクラスが見つからないが、インクルードされている
-
thinkphp5 timestamp 非整形の数値に遭遇した。
-
[解決済み】書き込みコンテキストでメソッドの戻り値を使用することができない
-
[解決済み】警告: file_get_contents(): https:// ラッパーがサーバー構成ですべて無効になっています。