2010-11-18 129 views
1

我正在使用PHP 5.3。即使文件绝对可执行,PHP函数is_executable也会返回false

使用getfacl的说明书文件权限是:

user::rwx 
group::r-x 
other::r-x 

我也是有使用PHP的程序执行功能的问题,http://www.php.net/manual/en/ref.exec.php

有问题的程序是wkhtmltopdf而且我已经在我的/ usr/bin中目录。

我的/ usr/bin目录中的转换程序具有完全相同的权限,is_executable函数返回true。

+0

你能否提供返回false的确切代码? – Mikhail 2010-11-18 15:47:40

+0

是否'is_file($文件)'的一个不可执行返回true?也许你拼错了名字...... – acm 2010-11-18 15:48:47

+0

2010-11-18 15:49:12

回答

0

经过一番研究,我解决了这个问题。问题在于selinux政策的阻碍。我使用了来自/ usr/bin/convert的安全上下文,并使用chcon命令将相同的安全上下文应用于/ usr/bin/wkhtmltopdf

5

对我来说,答案是创建一个策略模块以允许wkhtmltopdf运行禁用SELinux的:

  1. sudo su -(以root身份运行,使接下来的步骤简单)
  2. tail -F /var/log/audit.log | grep wkhtml > wkhtml.audit(离开 此运行,继续下一步)
  3. 尝试加载网页,试图创建一个pdf,它会失败,但现在我们是 日志记录。
  4. CTRL + C,从第2步停止进程(如果 着急,可以跳到7,但我们强烈建议你在做 SELinux的例外永久之前使用这些审核步骤!)
  5. cat wkhtml.audit | audit2allow -m wkhtmltopdf > wkhtmltopdf.te
  6. 检查wkhtmltopdf.te文件到 确保新规则是明智的。你可能会看到 “允许 httpd_t自我:过程execmem”,可能 “允许httpd_t var_t:文件 读” 根据您的设置
  7. cat wkhtml.audit | audit2allow -M wkhtmltopdf
  8. semodule -i wkhtmltopdf.pp(可能需要一分钟, 耐心等待)

您现在应该能够无误地加载PDF创建页面。如果没有,我们可能会解决一个问题并且到达另一个问题 - 可能需要重复步骤。尾要作出新的模块时wkhtml.audit2这次和猫它与原来的(否则你会被撤消首次定位!):

tail -F ... > wkhtml.audit2

如果audit2是空的,有非selinux问题。否则:

cat wkhtml.audit wkhtml.audit2 | audit2allow ...

相关问题