こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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のセーフモードをディレクトリ毎にうまく設定するにはどうすればよいのでしょうか?

よろしくお願い致します。

投稿日時 - 2011-05-18 10:06:24

QNo.6745752

すぐに回答ほしいです

質問者が選んだベストアンサー

ちょっと触ってみましたが、確かに無視される感じですね。(5.3.1)
権限をお持ちのようですから Apacheの httpd.confもいじれると思いますので、以下でどうでしょう。

<Directory "/var/www/aaa">
php_admin_flag safe_mode Off
</Directory>

投稿日時 - 2011-05-27 11:27:34

お礼

ご回答、本当にありがとうございました。

中々回答が得られなかったので、半ばあきらめていました。
そういうわけで、このコメントを今まで見ていませんでした。
大変失礼致しました。

JaneDueさんのアドバイス通りやってみたところ、
目的の結果が得られ、とても感謝しているところです。

2011/06/20 23:51

投稿日時 - 2011-06-20 23:51:04

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問