Codeanywhere に PHP コードがあり、サーバー上にファイルを作成しようとしているのですが、次のエラーが発生します。
「警告: fopen(file.txt): ストリームを開けませんでした: /home/cabox/workspace/index.php の 312 行目でアクセスが拒否されました」
私は fopen ($file, 'w') を使用します。パラメータとして 'r' を指定すると、動作します。
CodeAnywhere に、ユーザーがコードを使用してサーバー上で直接ファイルを作成できないようにするための制限があるかどうか尋ねたところ、制限はなく、権限を付与する方法を調べる必要があるだけだという回答でした。
最初にファイルとディレクトリの両方にchmodを使用しました
chmod 755 index.php (その後は実験目的で 777)
それでも、上記のエラーメッセージが表示されてしまいます。そこで、サーバーの各レベルの権限を調べて、以下に表示してみましたが、何もおかしなところは見当たりません(私の乏しい知識によると)。
/
[cabox@box-codeanywhere /]$ ls -ld
drwxr-xr-x 21 root root 4096 4月19日 03:09
/家/
[cabox@box-codeanywhere ホーム]$ ls -ld
drwxr-xr-x 3 root root 4096 2014年6月16日
/ホーム/cabox/
[cabox@box-codeanywhere ~]$ ls -ld
drwxrwxrwx 7 cabox cabox 4096 4月14日 11:48
/ホーム/cabox/ワークスペース/
[cabox@box-codeanywhere ワークスペース]$ ls -ld
drwxrwxrwx 4 cabox cabox 4096 4月19日 04:27
権限を変更できません/ユーザー名は根 私のユーザー名がキャボックス
[cabox@box-codeanywhere ワークスペース]$ id
uid=500(cabox) gid=500(cabox) groups=500(cabox)
index.phpがfile.txtを作成しようとしている場所は次のとおりです。/ホーム/cabox/ワークスペース/
-rwxrwxrwx 1 cabox cabox 18608 4月19日 05:12 index.php
何が間違っているのでしょうか?
前もって感謝します!
答え1
何度も実験した結果、仮想マシン開発環境を PHP ではなく HTML5 として設定していたことがわかりました。サーバーが Apache だったので PHP ファイルは正常に動作していましたが、いまだに理由はわかりませんが、権限の管理が異なっています。
環境を PHP に切り替えた後、以前は機能しなかったコマンドが機能し、最終的に問題を解決することができました。
ここでの「解決策」は、この問題に関する私の知識が限られているため、あまり重要視しないでください。
独自のユーザー (cabox) に 775 権限を与えても何も起こりません。Web サイトの実行時にサーバー上でファイルを作成、変更、削除する権限を持つのは「www-data」ユーザーだけだからです。
sudo chown -R www-data:www-data /home/cabox/workspace chmod 775 /home/cabox/workspace
これでうまくいきました。
現在、codeanywhere でユーザー名を「www-data」に変更すると、サーバー上で作業したり、ファイルを作成、変更、削除したりできなくなります。解決策としては、ユーザー (cabox) とグループ (www-data) の権限を設定し、同じ権限を与えることだと考えましたが、これまでのところうまくいっていないので、まだその部分を理解する必要があります。
今後同じ問題に遭遇する人たちの助けになれば幸いです。私の場合は 1 週間かかりました。かなりイライラしました :)
答え2
ファイルまたはディレクトリの所有者を変更したい場合があります
chown ユーザー名 -R フォルダー
私も同じ問題を抱えていましたが、これで問題は解決しました。
答え3
たぶんこれはうまくいくかもしれません。私も同じ問題を抱えていて、3時間グーグルで検索した後、これを試しました:
フォルダ権限
インストールを完了するために必要な最後の作業は、フォルダーの権限を設定することです。これを行うには、コマンド ラインを開いて次のように入力します。
sudo find . -type f -exec chmod 664 {} +
sudo find . -type d -exec chmod 775 {} +
sudo chown -R vm_username:www-data ~/workspace
少なくとも私にとっては、抱えていた権限の問題を解決しました。