繁体   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