我有一个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我的用户帐户
答案 0 :(得分:0)
所以我想我发现为什么我没有从我的python脚本获得任何输出,多亏了@Torxed。
似乎当我通过WAMP / PHP运行Python脚本时,它必须作为不具有任何音频的不同用户/环境运行。
这很奇怪,因为我设置'wampapache64'作为我的用户帐户运行,即使重启后我仍然得到相同的结果。
我甚至尝试过
SELECT A, B, C, D FROM TABLE WHERE A = 1
但是只返回密码提示,我将无法在PHP中填写。
这个项目现在看起来像死路一条。