2

私は現在、ApacheWebサーバーを実行するリモートCentOS5.6システムでsshを使用しています。pdftohtml残念ながら、現在そのマシンにインストールされていないpopplerバイナリを使用する必要があります。そこで、popplerパッケージをダウンロードして、ユーザーフォルダーの下にビルドしました。IIはシステム管理者ではないので、私はしませんでした

make install

コンパイルしたファイルはすべて下にあります

/users/myfolder/poppler-0.18.2/

PHPを介して実行する必要があるファイルshell_exec()

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

ssh bashを介して実行すると、正しい出力が得られます。代わりに、次の行をphpスクリプトに配置します。

echo shell_exec("/users/myfolder/poppler-0.18.2/utils/pdftohtml");

次の出力が得られます。

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

現在-rwxrwxrwxであるファイルパーミッションを777に設定してみました。shell_exec("whoami");また、使用すると「apache」になることにも気づきました。ファイルのパーミッションが-rwxrwxrwxの場合、apacheはスクリプトを実行できるべきではありませんか?

また、popplerをインストールするmake installことで問題が解決することも知っていますが、これはテスト目的であるため、テストが完了するまで、個人用フォルダーの外部でシステムを「汚染」することは避けたいと思います。

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

4

1 に答える 1

9

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

/usersが/homeと同じ基本的なものであると仮定すると、誰もがそれに+xを持っている必要があります。そこから、設定できます。chmod o+x /users/myfolder /users/myfolder/poppler-0.18.2 /users/myfolder/poppler-0.18.2/utils

(注:これにより、Apacheだけでなく、すべての人がこのバイナリを実行できるようになります。)

apacheユーザーとグループを共有する場合は、popplerディレクトリとそのグループが所有するすべてのものをchownし、o+xではなくg+xを設定することをお勧めします。

于 2011-12-29T13:50:24.047 に答える