2014-09-06 334 views
0

我試圖從php調用python腳本,一切都運行完美純php這樣的:如何從php laravel運行python?

$data = $_POST['text']; 
    $result=exec('python_file.py ' . escapeshellarg(json_encode($data))); 
    $resultData = json_decode($result, true); 

的問題是,當我使用同一線上laravel 3.2.13功能的一個我捆綁控制器,它不會執行命令並且不會出現錯誤!

有什麼幫助嗎?

這是我laravel功能看起來像:

public function action_test(){ 
    $text="Test"; 
    $result=exec('python_file.py ' . escapeshellarg(json_encode($text))); 
    $resultData = json_decode($result, true); 
    dd($result); 

} 

謝謝

+1

$結果將只包含輸出的最後一行。如果你想完整的輸出你需要傳遞第二個參數,例如:'exec('python_file.py'。escapeshellarg(json_encode($ text)),$ result);' – 2014-09-06 11:18:52

+0

好的,我做了,現在有問題了在路徑, 我所說的文件的完整路徑是這樣的: MyDrive:\ XAMPP \ htdocs中\ MyProject的\束\ myBundle \控制器\ python_file.py 它給這個錯誤: [鏈接] FileNotFoundError:'[錯誤2 ]沒有這樣的文件或目錄:'。\\ config.xml'' – Amr 2014-09-06 11:56:56

+0

你可以做一個堅實的&使用shell_exec而不是exec。讓我們知道你是否得到完整的字符串輸出。 – 2017-01-11 12:15:27

回答

1
  1. 請確保ü啓用在配置文件中的調試模式,並檢查是否有任何錯誤日誌。

  2. 檢查文件路徑是否正確?還有文件權限

3。根據PHP文檔,「如果您需要執行一個命令,並且將命令中的所有數據直接傳回,而不受任何干擾,請使用passthru()函數。」

希望它會有所幫助,如果沒有的話請在下面留言以便我們可以進一步解決。

感謝

0

問題現在已經解決: 解決方法:在我的Python代碼 ,它試圖調用其他文件比較是這樣的:

configFileDatasetBuilder = ".\\Configurations\\Config.xml" 

但據我所知,我打電話從一個控制器功能的整個事情,有一個請求路徑不同於文件路徑,所以它失去了它的路徑。 至於現在我硬編碼像蟒蛇路徑:

configFileDatasetBuilder =" MyDrive:\\xampp\\htdocs\\MyProject\\bundles\\myBundle\\controllers.\\Configurations\\Config.xml" 

和它的工作:) 感謝每一個