2011-12-29 13 views
2

現在、Apache Webサーバーを実行するリモートのCentOS 5.6システムでsshを使用しています。私はポップラーpdftohtmlバイナリを使用する必要があります。残念ながら、そのマシンには現在インストールされていません。そこで、私はpopplerパッケージをダウンロードし、それを私のuserフォルダの下に作りました。 IIは、システム管理者はないですので、私はPHP shell_exec、-rwxrwxrwxシェルスクリプトを実行する権限が拒否されました

make install 

をしなかったと私はPHP shell_exec()を通じて実行するために必要なファイルが

/users/myfolder/poppler-0.18.2/utils/pdftohtml 
ある

/users/myfolder/poppler-0.18.2/ 
の下にすべての私のコンパイルされたファイルを持っています

私がssh bashで実行すると、正しい出力が得られます。私は、代わりに、PHPスクリプトに次の行を置く場合:

echo shell_exec("https://stackoverflow.com/users/myfolder/poppler-0.18.2/utils/pdftohtml"); 

を私は次のような出力が得られます。私は777に現在-rwxrwxrwxあるファイルのアクセス権を設定しようとした

sh: /users/myfolder/poppler-0.18.2/utils/pdftohtml: Permission denied 

。私はまた、shell_exec("whoami");を使用すると "apache"という結果に気づきました。ファイルのアクセス権が-rwxrwxrwxの場合、スクリプトを実行できるべきではありませんか?

私はまた、make installを通してpopplerをインストールすることで問題を解決できることも知っていますが、これはテスト目的であるため、テストが完了するまでシステムを個人フォルダ外に汚染することは避けてください。

助けてくれる誰にも感謝します!

+0

CentOSもSELinuxを使用していませんか? – mario

答えて

8

ファイルがユーザーに対して実行可能であるという理由だけで、ユーザーが実際にファイルを実行できるわけではありません。ユーザーはまた、ファイルにアクセスできる必要があります。ユーザーは、/ users、myfolder、poppler-0.18.2およびutilsの場合、すべての '親ディレクトリ'の実行権限が必要です。

/usersは/ homeと同じ基本的なものだと仮定すると、誰もが+ xを持つべきです。

Apacheのユーザーであれば、あなたはグループを共有する:(これは、それが可能は、このバイナリだけでなく、アパッチを実行するために行います。注)単にchmod o+x /users/myfolder /users/myfolder/poppler-0.18.2 /users/myfolder/poppler-0.18.2/utils

の操作を行います。そこから、あなたはそれを設定することができますchown popplerディレクトリとそのグループの所有するすべてを使用し、o + xの代わりにg + xを設定する方がよいでしょう。

+0

非常に明確な答え。ありがとう。 –

+0

ねえ、それは狂っている。 2日分の調査が無駄になりました(おかげさまで、私はここで同様の答えを見ましたが、すべての親ディレクトリに実行権限が必要であるとは言及していませんでした。 – heximal

関連する問題