[英]Not getting output from python script when run through PHP
我有一個python腳本打印出當前在Windows 10中的音量混合器中的程序名稱。
當我在cmd中運行它時,這工作正常。
C:\wamp\www\Volume>py test.py
firefox.exe,Spotify.exe,Microsoft.Photos.exe,Steam.exe,
這是我的python腳本。
import sys
from pycaw.pycaw import AudioUtilities
def main():
list = ''
sessions = AudioUtilities.GetAllSessions()
for session in sessions:
volume = session.SimpleAudioVolume
if session.Process and session.Process.name():
list += session.Process.name() + ','
sys.stdout.write(list)
if __name__ == "__main__":
main()
我的PHP:
$python = "py";
$script = "test.py";
exec("$python $script 2>&1", $output);
print_r($output);
但是當我使用WAMP在PHP中運行它時,我沒有從該腳本獲得任何輸出,也沒有輸出任何內容。
如果我將我的python腳本更改為僅包含“print(”TESTING“)”那么我可以在PHP中讀取該輸出,這使我認為我的python代碼可能由於權限而失敗。 所以我將用戶從SYSTEM更改為我自己的用戶,所以當我使用時:
echo exec("whoami") // Outputs my user account name
我想也許我的PHP腳本已關閉,所以我嘗試通過命令行運行它,但結果是我想要的:
C:\wamp\www\Volume>php index.php
Array
(
[0] => firefox.exe,Spotify.exe,Microsoft.Photos.exe,Steam.exe,
)
所以當我通過瀏覽器執行我的PHP代碼時,我無法獲得任何輸出,除非我的python腳本只包含:
print("TESTING")
什么可能出錯?
編輯所以我決定通過改變我的python腳本在我的桌面上創建一個.txt文件來進一步調試,這在通過命令行運行時工作正常。 但是,當我通過瀏覽器/ PHP運行它時,不會創建該文件。 所以也許我需要為我的python腳本授予特殊權限? 我不知道為什么我需要這樣做,因為我已經給了PHP我的用戶帳戶
所以我想我發現為什么我沒有從我的python腳本獲得任何輸出,多虧了@Torxed。
看起來當我通過WAMP / PHP運行Python腳本時,它必須作為不具有任何音頻的不同用戶/環境運行。
這是奇怪的,因為我已經設置'wampapache64'作為我的用戶帳戶運行,即使重新啟動后我仍然得到相同的結果。
我甚至試過了
runas /savecred /noprofile /user:<USER>
但這只是返回密碼提示,我將無法在PHP中填寫。
這個項目現在看起來像死路一條。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.