站長資訊網
        最全最豐富的資訊網站

        淺談PHP運行Python腳本的方法

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

        淺談PHP運行Python腳本的方法

        注:本次問題產生的環境是建議在windows環境下,利用IIS+PHP去調用Python腳本失敗的前提下。如果你的環境與本次問題的環境不符。請自動規避。

        在產品需求分析到一定階段,各個部門之間需要一定的協調。然后我們做全棧開發的就需要把這些都籠統協調起來。也就出現了后臺同時去調起不同模塊、不同開發語言的需求。

        首先后臺使用的是IIS+PHP的環境,且運行在windows上。通過PHP去調用Python的程序。

        先說問題:在Python、PHP都加入系統的環境變量(且在cmd的模式下能正常運行)的前提下,通過運行a.php去調起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可執行權限給足(為了重現問題所在,就寫了最簡單的代碼)然后就出現了運行報錯。

        然后我將PHP代碼改進,查看exec函數執行的錯誤狀態碼

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

        發現錯誤碼為103(執行錯誤)

        【推薦學習:《PHP視頻教程》】

        這一次我就將exec函數中的bash改成了標準輸出(為了確定具體錯誤信息)

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

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

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

        "python 1.py 2>error.txt"

        這一次給我的錯誤居然是【'python' 不是內部或外部命令,也不是可運行的程序或批處理文件?!课疑踔烈欢葢岩蛇@臺電腦有了他自己的想法。就在翻遍所有資料后。我突然想起可能是由于PHP是運行在IIS的服務器上,然而IIS并不是一個所有用戶權限(這一點即是IIS建站目錄權限控制的優點,又是IIS建站的缺點)。結合之前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用戶控制可執行權限。

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

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

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 久久精品国产亚洲Aⅴ香蕉 | 国产精品乱伦| 亚洲AV无码久久精品色欲| 国产亚洲精品自在线观看| 91精品国产综合久久精品| 无码精品人妻一区二区三区人妻斩| 久久成人精品| 国产精品99爱免费视频| 人妻精品久久久久中文字幕69 | 亚洲日韩精品欧美一区二区| 久久精品九九亚洲精品| 无码精品人妻一区| 精品少妇一区二区三区在线| 国产精品内射婷婷一级二| 99视频在线精品国自产拍亚瑟| 精品九九人人做人人爱| 国产精品jizz视频| 国产午夜无码精品免费看 | 四虎国产精品永久地址51| 国产精品欧美亚洲韩国日本不卡| 国产精品日韩AV在线播放| 国内精品久久久久久久97牛牛| 精品亚洲A∨无码一区二区三区| 人妻少妇精品中文字幕av蜜桃| 亚洲日韩精品射精日| 亚洲一区精品伊人久久伊人| 综合在线视频精品专区| 亚洲国产精品VA在线观看麻豆 | 亚洲午夜久久久精品影院| 日韩精品www| 91精品国产91久久久久久| 亚洲欧美日韩精品永久在线| 91精品国产91久久久久久青草 | 亚洲线精品一区二区三区影音先锋| 日本精品久久久久影院日本| 午夜国产精品无套| 亚洲国产精品无码久久98| 亚洲国产精品乱码一区二区 | 国产精品自产拍在线观看花钱看| 国产成人精品免费大全| 国产欧美精品一区二区三区四区|