簡體   English   中英

通過PHP運行時無法從python腳本獲取輸出

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM