2012-06-08 83 views
2

我有一個PHP腳本,其中包含一些文本文件的寫作操作。現在,如果我從瀏覽器執行腳本,通過使用它的URL訪問它,它工作正常,並且文件完美地寫入。但是,當我從終端運行相同的腳本時,使用命令,腳本運行但不執行文件操作。我不確定,爲什麼會發生這種情況。我知道這可能是一件愚蠢的事情,或者我錯過了一些關鍵或任何東西,但是現在還不能弄清楚。文件寫不工作從終端,但從瀏覽器作品

這裏是我使用

/path/to/php -f /path/to/file 

命令這是寫入文本文件的代碼:

$myFile = "filename.txt"; 
$fh = fopen($myFile, 'a+') or die("can't open file"); 
$str = "file content here"; 
fwrite($fh, $str); 
fclose($fh); 

感謝您的幫助。

+2

我希望看到您的文件的代碼。 沒有看到它,很難猜測。 – deb0rian

+0

ok ..用文件編寫代碼修改了問題。這非常簡單。 –

回答

3

此的路徑。例如,從終端運行時,它將在您運行命令時所在的目錄中查找「filename.txt」,而從瀏覽器運行時,它將查找與PHP文件相同的目錄。

要解決此問題,請使用完整路徑,而不是僅訪問您正在訪問的文件的文件名。

+0

是的。那是問題所在。儘管@vinay首先指出我在那裏,但我不在乎你的答案,因爲這很容易理解。 –

1

這可能是一個權限問題。當您從瀏覽器運行腳本時,腳本將使用Web服務器的憑據執行。

將正確的權限設置爲文件/目錄或運行該腳本作爲Web服務器的用戶。

+0

文件的許可是0777.所以我不認爲許可可能是問題。 –

0

ilanco是對的,這可能來自許可問題。在Unix上,解決這個問題的方法之一是:

1。首先,將該文件的所有權交給命令行用戶,並將該組設置爲Web服務器。例如,如果該服務器是Apache的,執行以下命令:

chown your_username:www-data filename 

www-data爲Apache Web服務器的默認組。這個命令應該以root身份運行。

2。然後,給組寫權限:

chmod g+w filename 
相關問題