2014-09-05 330 views
0

我已經實現了一個簡單的緩存系統,如果數據庫表示沒有更新可用,則加載靜態HTML,並在數據庫說有更新時重新生成/寫入文件。PHP:fopen導致「權限被拒絕」 - 給PHP寫入權限?

初步試驗表明,這種工作,然而,文件的實際寫作不工作:

Warning: fopen(/var/www/html/cache/en/item_4.php): 
failed to open stream: Permission denied 

嘗試寫入該文件的PHP腳本位於/var/www/html/src/p/view_item.php

每解決方案到目前爲止假設我知道如何完全操作服務器並使用複雜的術語和推理;這是我第一次使用我自己的服務器,有幾件事情還不清楚。

我已經看到它多次表示你應該讓用戶「無人」寫入所述文件夾(在全新的PHP安裝中),而其他人則說文件本身需要對目錄擁有某種形式的所有權或者Apache本身需要寫入權限。

總體而言:沒有什麼工作,將目錄設置爲777,並以另一個用戶的身份運行操作(我只能假設他有寫訪問權限)。

我到底該如何讓PHP寫入/var/www/html/cache/en/和子文件夾?

我正在運行LAMP,我有shell訪問和所有。

+0

你可以寫在任何地方?你會讀...嗎?當你搜索這個問題時,你是否瀏覽過谷歌搜索結果的第一頁?當你嘗試這些事情時會發生什麼? (他們太詳細了,不能在評論中提出)[PHP的fopen文檔](http://php.net/manual/en/function.fopen.php)談論與safe_mode和open_basedir一起使用時的限制...? – 2014-09-05 21:22:43

+0

看看這個鏈接。我有一個類似的問題,這解決了它。 http://stackoverflow.com/questions/9133024/www-data-permissions – Nicolas 2014-09-05 21:25:03

+0

@ gloomy.penguin - 是的,我不能寫任何地方。它可以讀取任何內容,只是不寫(你可能想要重寫一下:P)。我總結了我在這個問題上努力的成果。 – 2014-09-05 21:27:12

回答

0

我該如何讓PHP寫入/ var/www/html/cache/en /和子文件夾?
PHP運行在www數據

chown -R www-data.www-data /var/www/html/cache/en/