私は別のフォルダにPHPでアップロードされたファイルを移動しようとしているんだけど、何とかこれは、その結果、動作しませんにファイルを移動することができません私はupload/tmp
(実際には/var/www/html/upload/tmp
)の適切な権限を持っていません。PHP:別のフォルダ
私はに許可を設定しており、/var/www/html/upload/tmp
のオーナーはroot:root
に問題がないことを確かめています。
しかし、それはそれを解決しませんでした...
他のものは、私が試してみた:
- セットの所有者
777
に変更し、ソースファイルのパーミッション apache:apache
にし、所有者root
(デフォルト、所有者)apache
に設定されている- PHPの設定(かなりのデフォルト、
/var/www/html
と/tmp
はopen_basedir
内、upload_tmp_dir
が設定されていないです)+ Lを確認しますogs - Apache設定+ログを確認する
- 同じフォルダ内でファイルを移動する - >これが動作します!
:>は<?php echo 'TESTING FILE MOVE' . '<br><br>'; echo getcwd() . '<br>'; echo get_current_user() . '<br>'; error_reporting(E_ALL); file_put_contents('/tmp/tst.txt', 'this is a test'); chdir('/var/www/html/upload/tmp'); echo getcwd() . '<br><br>'; rename('/tmp/tst.txt', 'tst-2.txt'); print_r(error_get_last());
777
と所有者root
または
apache
に、すべての親ディレクトリを設定
次のような出力が得られます。
テストファイルMOVE
/VAR/WWW/HTML
ルート
の/ var/WWW/HTML /アップロード/ TMPアレイ([タイプ] => 2 [メッセージ] =>リネーム(/tmp/tst.txt 、TST-2.txt): 許可拒否された[ファイル] => /var/www/html/test.php [ライン] => 13)
これは、スクリプトを実行しているユーザーの下で私に語ったと、私は正しいディレクトリにいます。また、ファイルの移動に焦点を当てて、余分なチェックを省略します(move_uploaded_file
)。
私のセットアップに関するいくつかの情報:
- CentOSの7
- PHP 7.1
- PHP-FPM
- のApache 2.4。6
/tmp/systemd-private-xxxx-php71-php-fpm.service-yyyy/tmp/
のように、PHP-FPMに別の一時ディレクトリを使用します。おそらく、このディレクトリの外にファイルを移動できない何らかの理由がありますか?私はそれに何かを見つけることができません...
私は誰かが何が起こっているかもしれないという手がかりを私に提供することを願っています!
' WWW-data'はCentOSの上に存在しないが、 'apachでこれらのコマンドを実行します'www-data'の代わりに' e'を使うと解決できません... – kasimir