簡體   English   中英

RHEL + PHP:在/ var / www / html之外寫文件?

[英]RHEL + PHP : writing files outside /var/www/html?

我正在嘗試打開一個文件進行讀/寫。 我一直在Ubuntu上開發,並且沒有任何問題。 現在是時候部署到RHEL服務器了,我發現似乎對要寫入的文件的位置有某種限制。

在RHEL上,我無法打開文件,除非它在/ var / www / html下。 我無法弄清楚如何允許其他位置。 出於磁盤空間管理的原因,我需要在不同的卷上操作文件。

以下是無論如何在Ubuntu上正常運行的代碼,但如果文件位於Web根目錄之外,則在RHEL上中斷:

$repometa = fopen( "/path/to/file/it/does/exist/and/has/good/perms", "r+b");

實際錯誤如下,這很奇怪,因為權限很好(由“apache”用戶擁有,文件為0644 perms,dirs為755)。

fopen(<thefile>): failed to open stream: Permission denied

有人能指出我描述如何取消RHEL的Apache / PHP配置以允許寫入文件系統上的備用位置的文檔嗎?

謝謝,〜保羅

要為接受的答案添加一些細節,我也有這個確切的問題,這個命令為我修復了它。

chcon -R -t httpd_sys_content_t /path/to/file/it/does/exist/and/has/good/perms

httpd_selinux(8)手冊頁中所述,如果您希望能夠讀取或寫入文件和目錄,則必須為文件和目錄提供特定的文件上下文。 有關詳細信息,請參見手冊頁,請記住PHP腳本作為守護程序運行,除非您專門設置PHP以作為CGI運行。

聽起來像用戶和/或組權限問題。 文件本身可能是可寫的......(正如你在很好的路徑名中提到的那樣),但是也許不允許apache用戶(或者標題為),在默認的/ var / www /之外進行任何文件更改html目錄?

有沒有辦法對/ var / www / html中的文件進行更改,然后讓另一個shell腳本(和/或用戶)從那里取出並將其移動到所需的目錄?

有意思的是它可以在Ubuntu而不是RHEL上運行; 對於用戶和團體來說,RHEL可能更嚴格嗎?

順便說一句:一般來說,不要讓PHP寫入www目錄之外的文件可能更安全...... :)

編輯

在@ Ignacio的提示(1)上,也許這樣的東西可能會起作用: http//us2.php.net/manual/en/function.fopen.php#56551

如果這是您需要的所有時間,您可能想嘗試在命令行上輸入:

/usr/sbin/setsebool -P httpd_can_network_connect=1

我仍然會小心www文件夾之外的PHP文件操作......但是,希望有幫助...!

(1) http://linux.die.net/man/8/httpd_selinux

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM