2011-12-29 75 views
2

我目前通过ssh运行Apache webserver的远程CentOS 5.6系统。我需要使用poppler pdftohtml二进制文件,但不幸的是,该文件目前尚未安装在该机器上。所以我下载了poppler软件包并将其构建在我的用户文件夹下。由于II我不是系统管理员,我没有做PHP shell_exec,拒绝执行-rwxrwxrwx shell脚本的权限

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("https://stackoverflow.com/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能够执行脚本吗?

我也知道通过make install安装poppler可以解决问题,但由于这是为了测试目的,我希望避免在我的个人文件夹之外“污染”系统,直到测试完成。

感谢任何会帮助的人!

+0

CentOS是否也使用SELinux? – mario 2011-12-29 13:33:41

回答

8

仅仅因为文件对于用户是可执行的并不意味着用户实际上能够执行该文件。用户还需要能够'进入'文件:用户需要所有'父目录'的执行权限,对于/ users,myfolder,poppler-0.18.2和utils,您需要执行权限。

假设/用户与/ home基本相同,每个人都应该有+ x。从那里,你可以将它设置:简单地做chmod o+x /users/myfolder /users/myfolder/poppler-0.18.2 /users/myfolder/poppler-0.18.2/utils

(注:这将有可能使大家执行该二进制,而不仅仅是阿帕奇)

如果apache用户和大家分享一组,最好使用chown poppler目录,并将所有内容归于该组,并设置g + x而不是o + x。

+0

非常明确的答案。谢谢。 – 2011-12-29 20:29:24

+0

该死的,这太疯狂了。两天的调查浪费了(非常感谢,我在这里看到了一些类似的答案,但他们没有提到所有父目录必须具有执行权限,只有这对我有用。 – heximal 2015-03-13 08:37:26

相关问题