2012-04-26 74 views
0

美好的一天。
在PHP中加載了一個PHP模塊(.so)。在MINIT階段,它嘗試讀取文件。
該文件是/tmp/aaa.txt 目錄/ tmp屬於root,其權限設置爲777.
文件/tmp/aaa.txt屬於apache用戶,並且也設置爲777權限。從php模塊讀取文件失敗errno 13

模塊用VCWD_FOPEN()打開文件,該文件定義爲
#define VCWD_FOPEN(path, mode) virtual_fopen(path, mode TSRMLS_CC)最終是fopen()。

VCWD_FOPEN失敗,錯誤13(權限被拒絕)。
奇怪的是,如果我手動調用模塊 (#php -r 'echo "hi";') - 它的工作原理。 但是,當它從Apache運行 - 它沒有。
有人知道爲什麼嗎?

謝謝

+0

嘗試apache用戶下運行相同的PHP命令,並看看會發生什麼,看起來像一個權限問題給我 – ilanco 2012-04-26 19:55:18

+0

可以通過更改試試吧你的Apache用戶組與root的一樣? – 2012-04-26 19:55:24

+0

如果我打印'getuid()'和'getgid()',它們都是0(表示我是root)。仍然拒絕訪問。如果我把文件放在/ etc中 - 它可以工作。但不在/ tmp中。奇怪:( – Vasisualiy 2012-04-26 21:17:07

回答

0

發現問題。 用戶權限策略由SELinux強制執行。 要禁用它我輸入 #setenforce 0
#service httpd restart

作品現在

+0

它可能工作,但這不是修復。 – 2012-05-02 20:01:43

+0

這是錯誤的原因。解決方案取決於我需要什麼。 – Vasisualiy 2012-05-03 08:12:23