2010-11-18 133 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 ...

相關問題