[英]Permission denied with user ubuntu but not with user www-data on .csv file
嘗試使用php訪問時,我僅在單個.csv文件上看到奇怪的Ubuntu權限問題。 該文件是ubuntu:www-data擁有的list.csv,而ubuntu用戶是www-data組的一部分。 該網站的其余部分工作正常,沒有權限問題,但是在嘗試使用php加載此文件時出現以下錯誤:
PHP Fatal error: Uncaught exception 'RuntimeException' with message 'SplFileObject::__construct(xxx/list.csv): failed to open stream: Permission denied'
如果我使用了www-data:www-data list.csv,則可以加載php。 為什么即使ubuntu是www-data組的一部分,如果ubuntu擁有此文件,為什么也不能通過php加載該文件?
另外,我可以以ubuntu用戶(vi list.csv)讀寫方式打開此文件。
編輯:對該文件的權限是:-rwxr-xr-x 1 ubuntu www-data
再次編輯:將權限更改為0644 -rw-r--r-- 1 ubuntu www-data沒有運氣
編輯更多內容:文件位於具有x權限的目錄中:drwxr-xr-x 3 ubuntu www-data 4096 Jul 28 23:09 content /
不確定它是否與執行權限有關,因為我可以將所有者更改為www-data:www-data並加載文件。 看來這與擁有文件而不是www-data的用戶ubuntu有關
編輯:錯誤的這行代碼,嘗試將.csv文件加載到php SplFileObject中:
SplFileObject::__construct("xxx/content/list.csv");
我可以在OP中看到,所有者和組之間的唯一區別是write
權限(您已經在組中嘗試了xr
和r
)。 因此,我懷疑您的PHP
正在嘗試以write
模式打開文件。
要確認此嘗試:
$myCSV = new SplFileInfo('YOUR CSV');
$myCSV->isReadable(); // should be true
$myCSV->isWritable(); //expecting this to be false
編輯:如果那是您的程序的問題,您可以使用$myCSV->openFile('r')
以讀取模式打開文件
您的服務器可能設置了PHP open_basedir
參數,這將阻止訪問該目錄之外的任何文件。
為了驗證這一點,請查看相關的php.ini文件(例如/etc/php5/apache2/php.ini),並檢查是否設置了open_basedir
行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.