No.3ベストアンサー
- 回答日時:
apache から PHP を実行する場合は、実行ユーザが apache となります。
よって、chmod() 対象のファイルまたはディレクトリに apache ユーザーが操作できる権限がついていない場合に、エラーが表示されます。
エラーを回避するには、以下のような方法が考えられます。
1. 操作対象のファイルまたはディレクトリに、最初からapache ユーザが操作できる権限を付与しておく
2. 下の方が回答しているとおり、system() 関数経由で sudo chmod コマンドを使って、root 権限等で chmod コマンドが実行されるようにする
3. suEXEC を利用する。
PHP の chmod 関数については、以下を参考にしてください。
http://jp.php.net/manual/ja/function.chmod.php
PHP の system 関数については、以下を参考にしてください。
http://jp2.php.net/manual/ja/function.system.php
Linux の sudo コマンドの使い方については、以下を参考にしてください。
http://linux.kororo.jp/cont/intro/sudo.php
Linux の chmod コマンドについては、以下を参考にしてください。
http://itpro.nikkeibp.co.jp/article/COLUMN/20060 …
suEXEC については、以下を参考にしてください。
https://httpd.apache.org/docs/2.0/ja/suexec.html
大変詳細にご回答いただきましてありがとうございます!
リンク先を拝見しましたが、とてもわかりやすかったで。
解決の糸口がつかめました。助かります!
No.2
- 回答日時:
system()系の関数で、sudoとからめてosのchmodを実行してやるのが妥当です。
ただWEB技術でパーミッションをいじる仕様が本当に必要なのかは
疑問が残りますが
No.1
- 回答日時:
ファイルまたはディレクトリの所有者がchmodをかけたユーザーではないのでは?
その場合は所有者をchmodのユーザーにするか、chmodのユーザーでファイルまたはディレクトリを作成するかになると思います。
root権限であれば基本的にどのファイル及びディレクトリの権限も変えられますがあまりお勧めは出来ませんので、PHPを実行する適当なユーザー(仮にAとします)を作って、Aでファイルやディレクトリを作成するようにすればよいかと。
早速ご回答いただきましてありがとうございます!
おっしゃる通り、ファイル所有者(A)と実行者(apache)は違います。さくらインターネットの共用サーバーではきちんと動くのですが、これはアクセスされるURLによってapacheの実行ユーザーが変わっているということでしょうか?それに近いことができたらいいなと思っていますが、もしご存じでしたら教えて頂けたらありがたいです。厚かましいですが、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Linuxサーバーのパーティション・ディレクトリの推奨見積もりについて 3 2023/01/17 00:46
- PHP phpでこの記述をもっと簡単に書く方法はないでしょうか…? 3 2022/11/16 19:57
- UNIX・Linux bash環境でのエラー対応をお願い致します。 1 2022/11/26 17:41
- サーバー Laravelをレンタルサーバーにインストールするにはどうすればいいですか? 2 2022/06/29 10:17
- PHP WordpressのPHPを安全に編集する方法 1 2022/08/04 01:43
- ドメイン・サーバー・クラウドサービス FileZillaを使用してwpXサーバーに接続できない 2 2022/03/29 21:02
- PHP eclipse pleiades phpのインストールについて 1 2023/02/03 17:15
- PHP バージョン情報の取得方法について 1 2023/03/15 11:56
- PHP 文字列を段落で分ける方法を教えて下さい。 2 2023/03/09 10:03
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
lsでディレクトリのサイズが409...
-
ファイルが移動できません。
-
FTPでファイルがダウンロードで...
-
Ubuntu、ファイル移動によるエ...
-
cronで定期的にWGETしたい
-
shellscript内のコマンドを、su...
-
rootユーザのメールボックスへ...
-
rootでも権限が無いようです
-
Server error! Error 500
-
あり得ない!アーカイブを展開...
-
PHPでchmod()を使えるようにす...
-
Index.html表示しない!!
-
「E212:書込み用にファイルを開...
-
Winmerge ファイルの中身は同じ...
-
嫌ってるのに真似してきたりマ...
-
ファイルの先頭行を全て削除したい
-
ファイルの単位
-
教えてください!困ってます。
-
Windows10 フォルダ内の自動並...
-
バッチファイルで変数の中身を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPでファイルがダウンロードで...
-
lsでディレクトリのサイズが409...
-
ファイルが移動できません。
-
shellscript内のコマンドを、su...
-
Index.html表示しない!!
-
「E212:書込み用にファイルを開...
-
Ubuntu、ファイル移動によるエ...
-
RPM のソースパッケージが展開...
-
シンボリックリンクでパミッシ...
-
Server error! Error 500
-
PHPでchmod()を使えるようにす...
-
書き込み権限がありません
-
あり得ない!アーカイブを展開...
-
Apacheのドキュメントルート配...
-
rootユーザのメールボックスへ...
-
(apache2)htaccessの認証が動か...
-
/var/run/sudo/root/unknown
-
chmod u-x .*の動作について教...
-
ファイル所有者を「apache」へ...
-
rootでも権限が無いようです
おすすめ情報