PHP如何運(yùn)行Python腳本

這篇文章主要介紹PHP如何運(yùn)行Python腳本,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

在鄂溫克等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都營(yíng)銷網(wǎng)站建設(shè),外貿(mào)營(yíng)銷網(wǎng)站建設(shè),鄂溫克網(wǎng)站建設(shè)費(fèi)用合理。

注:本次問(wèn)題產(chǎn)生的環(huán)境是建議在windows環(huán)境下,利用IIS+PHP去調(diào)用Python腳本失敗的前提下。如果你的環(huán)境與本次問(wèn)題的環(huán)境不符。請(qǐng)自動(dòng)規(guī)避。

在產(chǎn)品需求分析到一定階段,各個(gè)部門之間需要一定的協(xié)調(diào)。然后我們做全棧開發(fā)的就需要把這些都籠統(tǒng)協(xié)調(diào)起來(lái)。也就出現(xiàn)了后臺(tái)同時(shí)去調(diào)起不同模塊、不同開發(fā)語(yǔ)言的需求。

首先后臺(tái)使用的是IIS+PHP的環(huán)境,且運(yùn)行在windows上。通過(guò)PHP去調(diào)用Python的程序。

先說(shuō)問(wèn)題:在Python、PHP都加入系統(tǒng)的環(huán)境變量(且在cmd的模式下能正常運(yùn)行)的前提下,通過(guò)運(yùn)行a.php去調(diào)起1.py

PHP代碼(a.php)

$result = exec("py 1.py");
var_dump($result);

Python代碼(1.py)

print("123");
fl=open('test3.txt', 'w')
fl.write("5,5,5,1,2,3")
fl.close()

兩個(gè)目錄文件在同一目錄下。且IIS可執(zhí)行權(quán)限給足(為了重現(xiàn)問(wèn)題所在,就寫了最簡(jiǎn)單的代碼)然后就出現(xiàn)了運(yùn)行報(bào)錯(cuò)。

然后我將PHP代碼改進(jìn),查看exec函數(shù)執(zhí)行的錯(cuò)誤狀態(tài)碼

$result = exec("py 1.py", $array, $ret);
var_dump($result);
var_dump($array);
var_dump($ret);

發(fā)現(xiàn)錯(cuò)誤碼為103(執(zhí)行錯(cuò)誤)

這一次我就將exec函數(shù)中的bash改成了標(biāo)準(zhǔn)輸出(為了確定具體錯(cuò)誤信息)

PS:在bash中0,1,2三個(gè)數(shù)字分代表STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO,即標(biāo)準(zhǔn)輸入(一般是鍵盤),標(biāo)準(zhǔn)輸出(一般是顯示屏,準(zhǔn)確的說(shuō)是用戶終端控制臺(tái)),標(biāo)準(zhǔn)錯(cuò)誤(出錯(cuò)信息輸出)。

$result = exec("py 1.py 2>error.txt", $array, $ret);
var_dump($result);
var_dump($array);
var_dump($ret);

這一次運(yùn)行以后,打開error.txt居然出現(xiàn)了:Can't find a default Python.這種錯(cuò)誤(前提我是將python加入了環(huán)境變量且cmd狀態(tài)下能直接運(yùn)行py文件),感覺就遇到了不能言語(yǔ)的錯(cuò)誤。在充分排查環(huán)境變量、可執(zhí)行權(quán)限等錯(cuò)誤以后。我下意識(shí)的將exec里面的執(zhí)行語(yǔ)句改成了

"python 1.py 2>error.txt"

這一次給我的錯(cuò)誤居然是【'python' 不是內(nèi)部或外部命令,也不是可運(yùn)行的程序或批處理文件?!课疑踔烈欢葢岩蛇@臺(tái)電腦有了他自己的想法。就在翻遍所有資料后。我突然想起可能是由于PHP是運(yùn)行在IIS的服務(wù)器上,然而IIS并不是一個(gè)所有用戶權(quán)限(這一點(diǎn)即是IIS建站目錄權(quán)限控制的優(yōu)點(diǎn),又是IIS建站的缺點(diǎn))。結(jié)合之前error.txt文件報(bào)的錯(cuò)誤。我就將代碼做一下修改。

$res = exec("你python的安裝絕對(duì)路徑/python.exe 1.py 2>error.txt", $array, $ret);
var_dump($result);
var_dump($array);
var_dump($ret);

然后將python這個(gè)文件下所有文件的用戶擁有者增加一個(gè)IIS用戶控制可執(zhí)行權(quán)限。

這次PHP能找到了Python的可執(zhí)行exe,成功將我們的代碼執(zhí)行了。

PS:IIS+Windows 不虧是一個(gè)黑洞。

以上是“PHP如何運(yùn)行Python腳本”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

文章標(biāo)題:PHP如何運(yùn)行Python腳本
網(wǎng)頁(yè)網(wǎng)址:http://muchs.cn/article22/pphicc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、、網(wǎng)站維護(hù)、軟件開發(fā)虛擬主機(jī)、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站