搜尋
首頁後端開發PHP問題php呼叫python失敗怎麼辦

php呼叫python失敗怎麼辦

php呼叫python失敗怎麼辦?

PHP呼叫Python失敗的解決方案

假設有檔案:php_test.php  python_test.py

在php檔案中執行Python :

exec("python python_test.py", $array, $ret);

如果執行Python出錯並不能保存在陣列array中,因此應該把標準錯誤重定向到檔案中,以上程式碼改寫如下:

exec("python python_test.py 2>error.txt", $array, $ret);

在bash中0,1, 2三個數字分數代表STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO,即標準輸入(一般是鍵盤),標準輸出(一般是顯示屏,準確的說是用戶終端控制台),標準錯誤(出錯訊息輸出)。

也可以透過以下方式將標準錯誤重定向到標準輸出儲存到$array中:

exec("python python_test.py 2>error.txt 2>&1", $array, $ret);

然後就可以根據錯誤訊息去尋求解決方案。

一般在終端機透過指令執行PHP檔是可以馬上看到錯誤訊息的,但是透過瀏覽器執行PHP檔就只能上面所述方法去輸出錯誤訊息。因此問題也就是在命令列下PHP可以成功執行Python文件,而透過瀏覽器就無法成功運行,這是因為兩種方式所呼叫的動態函式庫不一致!

透過命令列方式呼叫的是系統中的已有的動態函式庫,而透過瀏覽器方式呼叫的是Web伺服器中的動態函式庫。 (我安裝的XAMPP,所以透過瀏覽器方式呼叫的就是lampp/lib中的動態函式庫)。

解決方案:

    1.在輸出的錯誤訊息中找到錯誤的動態函式庫

    2.透過locate指令找到相關的動態函式庫所在的位置:locate libxxx.so

    3.將web伺服器中的同名動態庫刪除或重新命名

    4.將透過第2步在系統中找到的動態庫連結到web伺服器的lib目錄中

實例:

Python中使用hashlib模組時可能出現兩個錯誤:

<span style="font-family:Arial, Helvetica, sans-serif;">relocation error: python: symbol OpenSSL_add_all_digests, version OPENSSL_1.0.0 not defined in file libcrypto.so.1.0.0 with link time reference</span>
<span style="font-family:Arial, Helvetica, sans-serif;">python: /opt/lampp/lib/libcrypto.so.1.0.0: version `OPENSSL_1.0.2&#39; not found (required by /opt/lampp/lib/libssl.so.1.0.0)</span>

1.找出系統中包含libcrypto.so. 1.0.0的所有路徑:locate libcryto.so.1.1

/home/ubuntu/.cache/vmware/drag_and_drop/52091a33-81b7-cc30-d88c-574c47558e32/ndk/libimobiledevice-android-master/openssl/libcrypto.so.1.0.0
/home/ubuntu/.cache/vmware/drag_and_drop/52091a33-81b7-cc30-d88c-574c47558e32/ndk/libimobiledevice-android-master/out/fsroot/lib/libcrypto.so.1.0.0
/lib/x86_64-linux-gnu/libcrypto.so.1.0.0
/opt/lampp/lib/libcrypto.so.1.0.0

2.將web伺服器中的同名動態函式庫重新命名:

sudo mv /opt/lampp/lib/libcryto.so.1.1 /opt/lampp/lib/libcryto.so.1.1.bak

3.將系統中libcryto.so.1.1連結到web伺服器的lib目錄:

sudo ln -s  /lib/x86_64-linux-gnu/libcrypto.so.1.0.0  /opt/lampp/lib/libcryto.so.1.1

libssl.so.1.0.0解決步驟同上。

更多PHP相關知識,請造訪PHP教學

以上是php呼叫python失敗怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具