2010-03-23 47 views
1

我正在研究在服務器上運行Python腳本的PHP腳本。我的服務器使用Apache 2.2.3和PHP 5.1.6運行CentOS 5.4。對本地目錄拒絕PHP chdir()權限

這是PHP代碼:

chdir("/home/cjones/git/pywrapper"); 
$output = shell_exec("python /home/cjones/git/pywrapper/wrapper.py"); 

這給我這個錯誤:

Warning: chdir() [function.chdir]: Permission denied (errno 13) in /var/www/html/wrapper.php on line 20 

在了shell_exec電話,我一直在使用也嘗試「CD /家庭/ CJO ... & & python ...「,但這不起作用。

該腳本需要從該目錄運行,或者由於無法找到想要的文件而開始拋出錯誤。如果一切都失敗了,我可以將路徑硬編碼到python腳本中,而不是使用相對路徑。

這是ls -l的〜/ git的

drwxrwxr-x 5 cjones cjones 4096 Mar 23 08:45 pywrapper 

相關輸出我還曾試圖chmod 777 ~/git/pywrapper但沒有奏效。目前的設置只是775.

我最好的猜測是,由於某種原因,Apache用戶無法訪問我的用戶的主目錄?但我不知道如何允許它。

+0

我不認爲這是php或權限。正如你猜測的,我認爲它是apache。聽起來像你必須在你的目錄的httpd.conf文件中創建一個別名。當然,這可能不是正確的做法,但基於你的問題,我認爲你正在嘗試做什麼。另見http://stackoverflow.com/questions/1225594/apache-13-permission-denied-in-users-home-directory – MJB 2010-03-23 14:43:53

回答

1

只改變'git'和'pywrapper'目錄的權限是不夠的。 Apache也需要能夠訪問'cjones'。大多數Linux機器默認爲用戶的主目錄,其模式爲0700.如果您不想放棄對0777級別的權限並授予全局訪問權限,則可以將組所有權更改爲您和Apache共享的新組,並授予0770到/ home/cjones,/ home/cjones/git和/ home/cjones/pywrapper

0

將您的網站目錄不在您的主目錄中,但將其符號鏈接到/var/www/mysite

也就是說,您可以將chmod o+x ~; chmod o+x ~/git; #etc.作爲目錄,chmod o+r ~/git/pywrapper/blablablabla作爲python需要能夠在以Apache運行時讀取的文件。