2016-09-24 11 views
1

所有者:groupのフォルダ/ home/UploadContentをphpプロセスと同じグループとユーザーであるapache:apacheとして作成しました。私はchmodを使用して775へのアクセス許可を設定しました。これにより、PHPはアップロードされたファイルをこのディレクトリに書き込むことができます。私はそれを試して、それは私に同じ不十分なアクセス許可のエラーを与えた。所有者IDがユーザーIDと同じでもmove_uploaded_file()には不十分なアクセス許可があります

正確なエラーは「ストリームを開くことに失敗しました:許可が拒否されました」です。

私はかどうかをテストするために小さなPHPプログラムを書きました: $Owner = fileowner("/home/UploadContent/"); $Current = exec("whoami"); $Id = exec("id -u " . $Current); echo ($Owner . " is owner, " . $Id . " is user.");

この常に「48は、48ユーザーで、所有者です。」

これは、phpが書き込み、読み取り、および実行のための適切な権限を持っていることを暗示しますが、それでもエラーは発生しています。

[コメントから昇格]

+1

SELinuxの問題のように聞こえます... bashプロンプトで 'setenforce 0'を実行してからスクリプトを再実行してみてください。これで問題が解決された場合は、プロセスが指定したフォルダにアクセスできるようにSELInuxを設定する必要があります。 'setenforce 1'でSELInuxを再び有効にすることができます。それに失敗すると、起動時にSELinuxが再び有効になります。 – Basic

+0

また、wifh perm 777を試してください。所有者/グループなどを確認してください – Nick

+0

Ok @Basic、setenforce 0を実行したときに動作しました。SELInuxを設定します。 – DeadMansMarch

答えて

0

bashプロンプトでsetenforce 0を実行してみてくださいしてから、スクリプトを再実行... SELinuxの問題のようですね。これで問題が解決された場合は、指定したフォルダにプロセスがアクセスできるようにSELinuxを設定する必要があります。

setenforce 1でSELinuxを再度有効にすることができます。それに失敗すると、起動時にSELinuxが再び有効になります。

CentOS/RedHatでは、私はaudit2allowを使用して、監査ログを分析して適切なポリシーを作成します。私は他のディストリビューションの標準が何であるか分かりません。 This Wiki pageは、SELinuxが何をしているのか、サーバーを安全にしたい場合はなぜ重要なのかを説明しています。

設定ファイルでSELinuxを設定する方法はわかりませんが、chconを使用して特定のリソース(ファイルなど)のセキュリティコンテキストを変更できます。セキュリティコンテキストの動作の詳細については、hereを参照してください。

最後に、disable SELinux entirelyとすることができますが、これはお勧めしません。

コメントで@VicSeedoubleyewが指摘したように、これと同様の問題を解決するためのチェックリストがありますavailable here

+0

このエラーのトラブルシューティングのチェックリストがあり、SELinuxの処理方法についても説明しています。http:// stackoverflow .com/questions/36577020/php-open-stream-no-such-file-or-directory –

+1

@VicSeedoubleyewおかげさまで、ありがとうございました。私は直接リンクを含める – Basic

関連する問題