web-dev-qa-db-ja.com

PHP許可されているが、まだ許可されていないファイルとディレクトリのサーバーアクセス許可

Codeanywhereにphpコードがあり、サーバー上にファイルを作成しようとしていますが、次のエラーが発生します。

"警告:fopen(file.txt):ストリームを開くことができませんでした:312行目の/home/cabox/workspace/index.phpでアクセスが拒否されました"

私はfopen($ file、 'w')を使用します。 'r'をパラメータとして使用すると、機能します。

ユーザーがサーバー上で直接ファイルを作成できるコードを使用できないようにするための制限があるかどうかをCodeAnywhereに尋ねましたが、制限はなく、アクセス許可を付与する方法を調べるだけでよいと回答しました。

ファイルとディレクトリの両方に最初に使用されたchmod

chmod 755 index.php(その後、実験目的で777)

それでも、上記のエラーメッセージが表示されます。そこで、サーバーの各レベルでアクセス許可を掘り下げて下に表示しましたが、奇妙なことは何も表示されません(私の知識が少ないため)

/

[cabox @ box-codeanywhere /] $ ls -ld
drwxr-xr-x21ルートルート4096Apr 19 03:09

/ home /

[cabox @ box-codeanywhere home] $ ls -ld
drwxr-xr-x3ルートルート4096 2014年6月16日

/ home/cabox /

[cabox @ box-codeanywhere〜] $ ls -ld
drwxrwxrwx 7 cabox cabox 4096 Apr 14 11:48

/ home/cabox/workspace /

[cabox @ box-codeanywhereワークスペース] $ ls -ld
drwxrwxrwx 4 cabox cabox 4096 Apr 19 04:27

ユーザー名がrootであるため、/の権限を変更できません。これは、ユーザー名がcaboxであるためだと思います

[cabox @ box-codeanywhereワークスペース] $ id
uid = 500(cabox)gid = 500(cabox)groups = 500(cabox)

file.txtを作成しようとしているindex.phpは/ home/cabox/workspace /にあります

-rwxrwxrwx 1 cabox cabox 18608 Apr 19 05:12 index.php

私は何が間違っているのですか?

前もって感謝します!

2
Flowerist

多くの実験の結果、仮想マシン開発環境をphpではなくHtml5として設定したことがわかりました。サーバーがApacheであるため、PHPファイルは正しく機能していましたが、それでも私にはわからない理由で、アクセス許可の管理が異なります。

環境をPHPに切り替えた後、以前は機能しなかったコマンドが機能し、最終的に問題を特定することができました。

私の問題の習熟度はかなり限られているので、これが一粒の塩で取られるべき「解決策」です

Webサイトの実行時に、「www-data」ユーザーのみがサーバー上のファイルを作成、変更、削除する権限を持っているため、自分のユーザー(cabox)に775権限を付与しても何も起こりません。

Sudo chown -R www-data:www-data/home/cabox/workspace chmod 775/home/cabox/workspace

これでうまくいきました。

これで、codeanywhereで、ユーザー名を「www-data」に変更すると、サーバーでの作業、ファイルの作成、変更、削除ができなくなります。解決策は、ユーザー(cabox)とグループ(www-data)として権限を設定し、同じ権限を与えることだと思いましたが、これまでのところうまくいかなかったので、まだそのビットを理解する必要があります

将来同じ問題に遭遇する人々を助けることを願っています。それは私に一週間かかりました、かなりイライラするものです:)

1
Flowerist

ファイルまたはディレクトリの所有者を変更することをお勧めします

chown username -R yourfolder

。私は同じ問題を抱えていました、そしてこれは私の問題を修正しました。

0
paudel

多分これはうまくいくかもしれません、私は同じ問題を抱えていました、そしてグーグルの3時間後に私はこれを試しました:

フォルダーのアクセス許可

インストールを完了するために必要な最後の最後のことは、フォルダーのアクセス許可を設定することです。これを行うには、コマンドラインを開いて次のように入力します。

Sudo find . -type f -exec chmod 664 {} + 
Sudo find . -type d -exec chmod 775 {} + 
Sudo chown -R vm_username:www-data ~/workspace

少なくとも私にとっては、私が抱えていた許可の問題を解決してください。

0
jparral