2016-10-21 87 views
-1

我嘗試執行一個命令「wget」在我的服務器A上下載一個文件,然後執行一個python,它將在這個文件中查找參數。php執行wget和python腳本

我的腳本:

switch ($_POST["parse"]) { 
    case 'parse1': 
     shell_exec("wget http://localhost/".$file_path); 
     shell_exec("python /opt/lampp/htdocs/mysite/api/scripts/script_parse.py ".$file_path." 1"); 
     echo $file_path; 
     break; 

    default: 
     echo "no"; 
     break; 
} 

但是(我用debian下當地XAMPP),該文件沒有下載,我必須加載到空間中的頁面,當我嘗試執行腳本(有或沒有文件),但是什麼都不做。

所以我從昨天晚上看,但我不能。

此外,我喜歡避免頁面加載,直到腳本執行結束。

+0

這是一個Python的問題呢? –

+0

wget不工作,也是python命令。 –

+3

而且?這是一個Python問題?只要你的第一個shell_exec調用失敗了,你就會在第二個shell中執行相同的問題。它用Python編寫的事實與您的問題完全無關。 –

回答

0

代替shell_exec()wget下載文件,使用「的file_get_contents()`。It supports both the HTTP and the HTTPS protocols,等等,此外,它還會給你一個錯誤提示信息,如果下載失敗。

您還需要如Arek的評論中所述,添加一些錯誤處理到你的代碼中,因爲這是你正確處理出現錯誤的情況的唯一方法,而且他們會這樣做,不僅僅是爲了你,讓它更易於檢測並調試,但也爲您的用戶。

閱讀PHP手冊,找出不同的函數返回錯誤的情況下,什麼值和ch反對這些。如果任何函數確實返回了錯誤的值,那麼向用戶顯示一條錯誤消息,並中止其餘的業務邏輯(您的代碼真正要執行的操作)。