3

サーバー(Linux)にjdk1.7.0_07インストールしました。ファイルへのファイルパーミッション~/binは実行可能です(755)。しかし、実行しようとすると、

$output = exec("/usr/java/jdk1.7.0_07/bin/java -version 2>&1");
echo $output;

それは許可拒否エラーを与えます、私はこれを試しました、

$output = exec("java -version 2>&1");
echo $output;

コマンドが見つからないというエラーが発生します。環境変数をチェックしている間。私は首尾よく追加JAVA_HOME = /usr/java/jdk1.7.0_07しましたPATH = /usr/java/jdk1.7.0_07/bin

だが、

上記のPHPスクリプトを実行すると、許可が拒否されたか、コマンドが見つからないというエラーが表示され続けます。個人的な経験や手がかりはありますか?

4

3 に答える 3

3

お使いの OS が CentOS の場合、SELinux に由来する可能性があります。

root@ls:~# /usr/sbin/getenforce 
Enforcing
root@ls:~# /usr/sbin/setenforce Permissive
root@ls:~# /usr/sbin/getenforce 
Permissive

https://superuser.com/questions/455935/php-script-cant-run-bash-script-sh-permission-deniedの詳細

それは私のために問題を解決しました。

于 2012-12-26T09:00:55.863 に答える
2

これらのコマンドをコマンドラインから実行している場合は、おそらく自分のユーザー権限で実行します。ただし、Web アプリで PHP スクリプトを介してこれらの同じコマンドを実行すると、それらは Apache ユーザー (通常は www-data) 権限で実行されます。つまり、PHP スクリプトを実行するのとまったく同じユーザーとしてログインできない限り、コマンドライン出力に依存してアクセス許可エラーをデバッグすることはできません。

于 2012-10-16T16:23:17.857 に答える
1

2 つの異なる問題があるようです。

Java 実行可能ファイルへのフル パスを指定したときにアクセス許可が拒否されたというエラーが表示される場合は、アクセス許可が間違っている可能性があります。最も一般的な原因は、パスのどこかで、Apache ユーザー (通常は www-data) が読み取りアクセス権を持っていないことです。たとえば、www-data が jdk1.7.0_07 ディレクトリの読み取り権限を持っていない場合、bin という子ディレクトリを表示 (または開く) できません。

パスに関しては、権限が正しく設定されていないと機能しません。しかし、環境の PATH をどこに設定しましたか? ユーザープロファイルにありましたか?

于 2012-10-16T16:19:03.860 に答える