Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过PHP运行时无法从python脚本获得输出_Php_Python_Permissions_Windows 10 - Fatal编程技术网

通过PHP运行时无法从python脚本获得输出

通过PHP运行时无法从python脚本获得输出,php,python,permissions,windows-10,Php,Python,Permissions,Windows 10,我有一个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 =

我有一个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代码可能是由于权限而失败的。因此,我将用户从系统更改为我自己的用户,因此当我使用:

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脚本没有得到任何输出,这要感谢@torx

似乎当我通过WAMP/PHP运行Python脚本时,它必须作为一个没有任何音频的不同用户/环境运行

但这很奇怪,因为我已经将“wampapache64”设置为以我的用户帐户运行,即使重新启动后,我仍然得到相同的结果

我甚至试过

runas /savecred /noprofile /user:<USER>
runas/savecred/noprofile/user:
但这只是返回密码提示,我无法在PHP中填写


这个项目现在看起来像是一条死胡同。

所以我想我找到了为什么我的python脚本没有得到任何输出,多亏了@torx

似乎当我通过WAMP/PHP运行Python脚本时,它必须作为一个没有任何音频的不同用户/环境运行

但这很奇怪,因为我已经将“wampapache64”设置为以我的用户帐户运行,即使重新启动后,我仍然得到相同的结果

我甚至试过

runas /savecred /noprofile /user:<USER>
runas/savecred/noprofile/user:
但这只是返回密码提示,我无法在PHP中填写


这个项目现在看起来像一条死胡同。

sys.stdout.flush()
总是很好做的。这是隐含的,但出于调试的目的,它总是甜蜜的。另外,添加一个
os.exit(1)
可能会很有用,这只是为了确保退出时有一个好的退出代码,这样PHP就不会试图对输出或任何东西进行垃圾处理。同样,只是为了调试目的。@Torxed我尝试了你的建议,得到了相同的结果:/奇怪的是,虽然我在做这些更改时犯了错误,我把错误反馈给了我,一个新手-奇怪的是,使用
php index.php
可以得到任何结果,但在web浏览器中运行时却没有,尤其是在窗户里。如果有什么问题的话,您的WAMP服务器应该有更多的权限,因为(如果我没有弄错的话)WAMP在Windows下以服务用户的身份运行。您的apache错误日志怎么说?有什么事吗?你能加上一张
print(“只是一些东西”)
到您的
index.php
以确保它有输出?请在开始处和底部各选一个,看看执行的进度。@Torxed是的,很奇怪,我实际上将用户类型WAMP runs as under改为我自己的帐户,而不是服务,但我得到了完全相同的结果。我的apache错误日志什么也没说!是的,我的index.php很好,也可以很好地输出东西:/
sys.stdout.flush()
总是很好。这是隐含的,但出于调试的目的,它总是甜蜜的。另外,添加一个
os.exit(1)
可能会很有用,这只是为了确保退出时有一个好的退出代码,这样PHP就不会试图对输出或任何东西进行垃圾处理。同样,只是为了调试目的。@Torxed我尝试了你的建议,得到了相同的结果:/奇怪的是,虽然我在做这些更改时犯了错误,我把错误反馈给了我,一个新手-奇怪的是,使用
php index.php
可以得到任何结果,但在web浏览器中运行时却没有,尤其是在窗户里。如果有什么问题的话,您的WAMP服务器应该有更多的权限,因为(如果我没有弄错的话)WAMP在Windows下以服务用户的身份运行。您的apache错误日志怎么说?有什么事吗?你能加上一张
print(“只是一些东西”)
到您的
index.php
以确保它有输出?请在开始处和底部各选一个,看看执行的进度。@Torxed是的,很奇怪,我实际上将用户类型WAMP runs as under改为我自己的帐户,而不是服务,但我得到了完全相同的结果。我的apache错误日志什么也没说!是的,我的index.php很好,也可以很好地输出内容:/