2

我目前在运行 Apache 网络服务器的远程 CentOS 5.6 系统上通过 ssh。我需要使用 popplerpdftohtml二进制文件,不幸的是,该二进制文件当前未安装在该机器上。所以我下载了 poppler 包并将其构建在我的用户文件夹下。由于我不是系统管理员,所以我没有这样做

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

我尝试将文件权限设置为 777,目前是 -rwxrwxrwx。我还注意到shell_exec("whoami");在“apache”中使用结果。如果文件权限是-rwxrwxrwx,apache不应该能够执行脚本吗?

我也知道通过安装 popplermake 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 用户和你共享一个组,最好使用 chown poppler 目录和该组拥有的所有内容,并设置 g+x 而不是 o+x。

于 2011-12-29T13:50:24.047 回答