※ ChatGPTを利用し、要約された質問です(原文:PHPセーフモードをディレクトリ毎に設定するには?)
PHPセーフモードをディレクトリ毎に設定する方法
このQ&Aのポイント
PHPのセーフモードをディレクトリ毎に設定する方法について説明します。
ウェブサーバのディレクトリごとにPHPのセーフモードを設定する方法をご紹介します。
セーフモードを使って特定のディレクトリ内のPHPファイルに対してプログラム実行関数を許可 / 制限する方法を解説します。
PHPセーフモードをディレクトリ毎に設定するには?
OSはLinux Fedora10で、ウェブサーバは Apache/2.2.10 (Unix)、PHPは5.2.9 (cli)を使用しています。
以下のディレクトリをウェブサーバのディレクトリとして作成し、その中にPHPファイルをそれぞれ設置しています。
/var/www/aaa
/var/www/bbb
/var/www/ccc
ここで、ディレクトリ「/var/www/aaa」内のPHPファイルにおいては、system()やその他のプログラム実行関数を許可したいのですが、その他の「/var/www/bbb」や「/var/www/ccc」内のPHPファイルにおいては許可したくありません。
上記のことを実現すべく、プログラム実行関数の使用を制限するために、「php.ini」のファイルを以下のように変更しました。(その後、HTTPDを再起動して、変更を反響させました。)
safe_mode = Off
↓
safe_mode = On
safe_mode_exec_dir =
↓
safe_mode_exec_dir = /var/www/aaa
すると、ディレクトリ「/var/www/bbb」や「/var/www/ccc」内のPHPファイルだけではなく、除外したはずの「/var/www/aaa」内のPHPファイルでも、system()やその他のプログラム実行関数の使用ができなくなりました。そして、以下のようなエラーメッセージを受け取ります。
Warning: shell_exec() [function.shell-exec]: Cannot execute using backquotes in Safe Mode in /var/www/aaa/example.php on line 10
PHPのセーフモードをディレクトリ毎にうまく設定するにはどうすればよいのでしょうか?
よろしくお願い致します。
お礼
ご回答、本当にありがとうございました。 中々回答が得られなかったので、半ばあきらめていました。 そういうわけで、このコメントを今まで見ていませんでした。 大変失礼致しました。 JaneDueさんのアドバイス通りやってみたところ、 目的の結果が得られ、とても感謝しているところです。 2011/06/20 23:51