質問: $uploaddir . basename($_FILES['userfile']['name']); echo ''; if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { echo "File is valid, and was successfully uploaded.\n"; } else { echo "Possible file upload attack!\n"; } ``` のように記述しています。$_FILES['userfile']の中身も確認しましたが、値は取れていました。 3開発環境は、Macで行なっており、mac上ではアップロードできました。 行き詰ってしまい、質問しました。よろしくお願いします。
回答: SELinuxを使っているでしょうか? `sudo tail -f /var/log/audit/audit.log` コマンドを実行し SELinux のログを見ながら、もう一度同じ操作をしてみてください。もし `denied { getattr } for pid=XXXX comm="httpd" path="/var/www/html/XXXXX"` みたいなエラーログが出力されているなら、SELinux がファイル書き込みを遮断しています。 以下のコマンドを実行してください。 ``` # Apache(mod_php)からのファイル書き込みを許可 sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/img/contribute_file_img' # ラベルを再設定 sudo restorecon -R /var/www ```