2015-08-26 23 views
3

在我的腳本中,我需要連接到ftp並下載幾個zip文件,然後將它們解壓縮到一個目錄中。我已經得到了這個實現,它運行正常,當我通過瀏覽器運行腳本,但是當crontab運行這個腳本時,它會引發錯誤,它提取文件失敗。我試圖研究,但我沒有運氣,我不明白這個原因。當PHP腳本被Crontab執行時,PHP Zip Archive Extract不起作用

下面是我得到的錯誤:

A PHP Error was encountered 

Severity: Warning 
Message ZipArchive::extractTo(/home/name/files/complete//filename.txt): failed to open stream: Permission denied 
Filename: controllers/import.php 
Line Number: 66 

腳本:

$txt_file: "/home/name/files/complete/Data.zip"; 
$server_txt_file = "/TXT/Data.zip"; 

if (ftp_get($ftp_conn, $txt_file, $server_txt_file, FTP_BINARY)) 
{ 
    $zip = new ZipArchive; 
    if ($zip->open($txt_file) === TRUE) 
    { 
     $zip->extractTo('/home/name/files/complete/'); 
     $zip->close(); 
     unlink($txt_file); 
    } 
} 

我想現在就解決這個問題了天,但我想不出是什麼問題。

回答

0

錯誤是告訴你一切你需要知道:

failed to open stream: Permission denied

所以你的PHP進程沒有權限寫入指定的文件夾。所以你應該改變指定文件夾的權限。

+1

我知道,我也有權限。它在我通過瀏覽器運行時工作,但在crontab運行時會失敗。 – user4676307

+2

@ user4676307:當您從命令行運行php代碼時。腳本以您的用戶權限運行,而不是以www數據用戶權限運行。 –

+0

感謝您的評論我現在明白爲什麼我會收到此錯誤。你能幫助我如何在服務器上改變這個權限嗎?我從來沒有做過這樣的事情。 – user4676307