2016-04-19 43 views
1

執行我有一個非常簡單的PHP文件不創建一個文件,創建一個文本文件,每次運行:PHP時的cronjob

$date = date('Y-m-d H-i-s', time()); 
$log_name = "Cronjob". $date; 
if($fh = fopen($log_name,'w')){ 
    fwrite($fh, print_r($date)); 
    fclose($fh); 
} 

當我使用我的瀏覽器上運行的文件中創建一個txt文件在我的服務器上。當我用cronjob運行文件時,它不會創建一個txt文件。 當我到我的服務器上的私人> cron.log我看到cronjob工作正常,結果打印到cron.log。

有人能告訴我爲什麼嗎?我需要在服務器上寫入該文件:)

+0

您可以使用'$ log_name'的完整路徑嗎?它被創建,但它可能在某個地方。所以,最好使用完整路徑來查看文件是否被創建。 – ryanicle

+0

然後檢查您使用的目錄是否具有完全控制權?像讀/寫給用戶? –

回答

1

當在cronjob中執行時,需要提供完整路徑。該腳本在它所在的目錄中執行,因此相對路徑不起作用。

$absolut_path = "whatever your absolutpath is"; // maybe something like /var/www/html/ 
$log_name = $absolut_path."Cronjob". $date; 
+0

是否意味着我的php文件中的每個路徑都需要使用絕對路徑? 例如在另一個php文件中的函數無效: rename(「/ web/something.html」,「/web/something-else.html」); –

+1

好吧,它現在完美工作:我用dirname(__ FILE__)解決該問題使用以下語句: $ log_name = dirname(__ FILE __)。「/ Cronjob」。 $日期; –

+0

「/web/something.html」是一個完整的路徑,所以應該工作。 – DocRattie