2015-03-18 117 views
-2

我在我的index.php頁面中有這樣的代碼,這很簡單,但我是一個PHP noob。我只希望能夠編寫,每當有人訪問該頁面時,將這一行代碼追加到.txt文件中,但我無法使其工作。 我甚至沒有收到錯誤信息。 服務器正在運行一個Pi。PHP - 如何寫入文件?

<?php 

$fileDir = fopen('/mnt/data_8GB/webCrawlLog.txt', 'a'); 
    if ($fileDir === NULL) echo "ERROR"; 
    else {fwrite($fileDir, date('H:i:s:'));} 
fclose($fileDir); 

?> 

TL:DR 只是想寫信給使用PHP一個.txt,也許有PHP創建一個文件,如果沒有文件存在。

+2

在您打開PHP標記 (例如'<?php error_reporting(E_ALL);)後立即向文件頂部添加錯誤報告。 ini_set('display_errors',1);'然後你的代碼的其餘部分,看看它是否產生任何東西。還要確保文件夾有寫入權限。 – 2015-03-18 22:05:00

+1

''file_put_contents('/ mnt/data_8GB/webCrawlLog.txt',date('H:i:s:')。PHP_EOL,FILE_APPEND);' – adeneo 2015-03-18 22:06:27

+1

'fopen'返回成功時的文件句柄,如果是則返回boolean false失敗;您正在使用'==='與返回值進行嚴格比較。所以如果'fopen'失敗了,你不會進入ERROR行,但是你仍然不能寫。 – andrewsi 2015-03-18 22:06:31

回答

0

您的PHP代碼有效,請嘗試寫入/tmp,您將看到它填滿。

我想你的PHP是由Apache運行?這意味着用戶apache正在運行(通常爲www-data)將需要對文件夾的寫入權限。

你真正需要寫訪問整個路徑也運行

namei -l /mnt/data_8GB/ 

應顯示在這兩個文件夾的權限,雙方將需要www數據寫入訪問無論是作爲用戶,組或世界。雖然小組是可取的。

+0

嘗試寫入/ tmp,同樣的問題。 運行對蝦-l的/ mnt/data_8GB /給出: drwxr-XR-X根根/ drwxr-XR-X根根MNT drwxr-XR-X屁屁data_8GB – 2015-03-19 15:39:05

+0

好了,我改變了我的代碼bit: <?php $ fileDir = fopen('/ tmp/webCrawlLog.txt','a'); \t if($ fileDir == NULL)echo「ERROR」; \t else {fwrite($ fileDir,「Day Crawled:」。date('Y:m:d')。「」。「Time Crawled:」。date('H:i:s')。「」。「 IP:「。$ _SERVER ['REMOTE_ADDR']。」\ n「);} fclose($ fileDir); ?> 這工作正常。它創建一個文件,可以附加到它,給我的信息,很好。唯一的問題是,我仍然無法保存到我的/ mnt/data_8GB – 2015-03-19 16:22:28

+0

根是所有者和組的兩者。 Chown www-data這兩個文件夾 – exussum 2015-03-19 18:14:06