【发布时间】:2017-04-03 15:01:45
【问题描述】:
我有私人服务器 CentOS 6 并且我已经安装了pdftk 程序来生成 pdf 文件。当我连接 SSH 客户端时,我可以成功运行 pdftk 程序。但我不能在 php 中使用 exec() 函数。
我有一个非常简单的 php 文件,如下所示。这只是为了测试 pdftk 是否正常工作。当我使用 xampp 在我的本地主机上运行此文件时,它会生成该文件,但是当我在我的私人服务器上尝试时,没有给出错误并且不会生成该文件。我不是专家,期待您的帮助。提前致谢。
PHP 代码:
<?php
exec("pdftk form.pdf output private.pdf");
错误如下所示:
Array ( [0] => Error: Failed to open output file:
[1] => collated.pdf [2] => No output created.)
注意:我已经在 putty ssh 客户端上尝试过这段代码并且运行良好。
【问题讨论】:
-
很可能 SELinux 没有设置为允许 httpd 服务器运行这个二进制文件(这是有道理的)。审核日志中的 AVC 会向您确认。
-
那我该怎么办?你能给我一些建议吗?我应该在谷歌上输入什么来解决这个问题。 ? @Jakuje
-
输入谷歌并不能解决问题。你要么想了解这个问题,所以你应该找出什么是 SELinux,正如我已经写过的,查看审计日志什么被拒绝以及为什么,可能使用
selinux-troubleshoot或audit2allow工具解决它(没有来自一般建议这里)。或者直接关闭 SELinux,如果你不关心安全性(这会让它神奇地工作)。 -
@Jakuje 我暂时关闭了 selinux 并重新启动了我的服务器,但仍然是同样的问题。我认为还有另一个问题。你怎么看?
-
你是如何关闭 SELinux 的?