我使用PHP的exec($cmd, $output)
函數從PHP腳本中運行一些python腳本。處理Python異常/ PHP中的錯誤
documentation指出程序的所有輸出都寫入$output
陣列。這工作正常,但是,如果Python代碼引發異常/錯誤,該函數似乎只返回NULL,沒有關於異常的任何信息。
例如:
run_python.py
print('starting python')
x = 1/0 #This will raise an error
print('complete python')
從交互式PHP殼運行它產生以下:
php > $output = '';
php > $ret_val = exec('python run_python.py', $output);
Traceback (most recent call last):
File "run_python.py", line 2, in <module>
x = 1/0
的$output
陣列只包含starting python
,和$ret_val
不包含任何內容。
這對於交互式shell是可以的,但是我正在運行web界面中的代碼,並且從不顯示錯誤信息。有什麼方法可以捕獲該錯誤,然後使用echo
進行顯示?
我試過shell_exec和passthru,但沒有成功。