久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      淺談PHP運行Python腳本的方法

      本篇文章給大家介紹一下談PHP運行Python腳本的方法。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。

      淺談PHP運行Python腳本的方法

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

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

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

      先說問題:在Python、PHP都加入系統(tǒng)的環(huán)境變量(且在cmd的模式下能正常運行)的前提下,通過運行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()

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

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

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

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

      【推薦學(xué)習(xí):《PHP視頻教程》】

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

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

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

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

      "python 1.py 2>error.txt"

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

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

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

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

      PS:IIS+Windows 不虧是一個黑洞。

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號