2011-05-01 128 views
2

我在我的筆記本電腦上運行PHP腳本updreading.php本地(與Mac OS X 10.6.7)。 這裏的updreading.phpPHP的fopen無法打開文件寫在Mac OS X

<?php 
    $outFile = "examples-output.txt"; 
    $out = fopen($outFile, 'w') or die("can't open write file"); 
?> 

的內容。當我運行它,我得到「無法打開寫文件」的錯誤消息。我認爲它應該與權限有關。我已經讓自己(arman)擁有/ Library/WebServer/Documents /,並且具有讀寫權限和'應用設置到封閉項目'的權限。我正在寫入的腳本和文件(examples-output.txt)位於/ Library/WebServer/Documents/wabun /中。下面是/在/庫/ Web服務器/文件/ wabun文件的權限:

[email protected] 1 arman admin   0 May 1 01:03 examples-output.txt 
[email protected] 1 arman staff  1657 May 1 01:04 updreading.php 

我試圖解決這個問題的最後4小時嘗試不同的權限,沒有運氣。任何想法如何解決這個問題,傢伙?謝謝!

+0

什麼是'的var_dump(is_writable($不過outFile))的輸出;'? – Charles 2011-05-01 05:28:19

+0

@Charles:不必要的問題,肯定是假的...... – 2011-05-01 05:35:23

+0

@Alix,這將是唯一的,如果世界是不是瘋了假的。我已經看到PHP無法打開文件進行寫入,但如果文件是可寫的,則返回true。它結束了一些奇怪的SELinux的問題,但這個特殊的問題是關於OS X. – Charles 2011-05-01 05:39:17

回答

1

我敢打賭問題是您的web服務器或PHP實例沒有在同一用戶(arman)下運行,您可以使用get_current_user()函數檢查此問題。您可以配置Apache以使用您的權限運行(在ServerFault中請求)或爲該文件夾提供更多慷慨的權限,如0777

另一件事,你確定$outFile映射到一個絕對路徑?嘗試做:

var_dump(is_file($outfile)); 
0

你需要做阿帕奇(Apache的假設是您正在使用的服務器)的所有者或放在組(並給組寫訪問)或給予全部或等寫訪問..督察Apache是​​實際執行該腳本的一個, 不是你。

+0

可以測試和解釋如何做到這一點_「你需要讓阿帕奇(Apache的假設是您正在使用的服務器)的所有者或放在組(並給組寫權限)「_這將是非常有幫助的! – 2012-02-23 19:21:36

+0

'chmod'用於更改文件的讀/寫/ exec權限,'chown'用於更改文件所有者,'chgrp'用於更改文件組。 *最簡單*(和最不安全)的修復將是'chmod 777 [目標文件/目錄]'有問題的所有文件。這將給所有所有者/組提供讀/寫/執行權限。有更安全的方法,但取決於設置/需求。但是一些例如:chown將所有者改爲apache。或者用apache創建一個組,並使用'chgrp'來改變組(也可能需要o chmod來更改用戶和/或組的權限,具體取決於你所做的事情)OP中的當前權限顯示只讀所有者) – 2012-02-23 21:07:11

6

我有這個完全相同的問題。我必須確保所有父級文件夾的權限都正確。舉例來說,如果(在OSX)試圖寫入該目錄 ~/foo/bar/baz,我用命令chmod -R 777 ~/foo解決它。

相關問題