【发布时间】:2021-03-07 06:10:50
【问题描述】:
所以基本上,我正在尝试对我将要构建的网站进行一些初步测试。 将通过该站点进行下载,可能由不同用户下载相同的资源,可能几乎或同时进行。我想实现一种锁管理器,以防止在资源已经在进行中时重复下载资源。
我正在运行的测试只是为了看看这是否可能。我现在特别测试的是,如果我开始运行一个程序,如果我再次尝试打开该程序,它会打开一个全新的实例还是转到已经打开的实例。我这样做是为了尝试查看用户 1 是否在他们的程序中进行了更改,如果第二个用户打开他们的程序,他们会看到这些更改;否则,如果他们打开一个全新的程序实例,他们可能看不到更改。
PHP
exec(escapeshellcmd("C:\Program Files\Python 3.7\python.exe Test2Php.py 0 Testing"), $o1, $r);
echo $r;
var_dump($o1);
Python
#!/usr/bin/env python
import sys
arr = []
t = sys.argv[1]
if (t == '0'):
arr = [sys.argv[k] for k in range(2, len(sys.argv))]
print("if")
else:
print(str(len(arr)))
问题是脚本根本不返回任何输出!它也不运行。我通过让 python 程序在成功执行结束时写入一个文件来测试这一点。我尝试过 shell_exec、passthru 等。程序本身在通过命令行运行时可以工作,但在我制作的任何脚本中都没有。
我在 Windows 上使用 WAMP 服务器。
编辑:
对于其他处理此问题的人。确保您的系统路径变量中有默认的 Python 包。您可以通过安装最新版本的 python 并选择添加到系统路径来轻松完成此操作。卸载 anaconda 或其他任何可能妨碍系统路径并享受的东西。 还要确保找到 python exe 所在的位置并使用它的完整路径。
【问题讨论】:
-
您的编辑是否意味着您解决了问题?您是否在日志文件中查找错误?
-
是的,鲁弗斯。我认识到这是某种权限/特权问题,因为脚本在我手动执行时有效,但在我的 php 脚本执行时无效。然后我注意到我有 anaconda 作为我的默认 python,所以我用 python 解释器本身替换了它。我确保将其添加到系统路径中。然后我在我的 php 脚本中使用了 python exe 的完整路径,并且它起作用了!
-
我还想补充一下我最初测试的内容。每个不同的 php 脚本都会打开您使用 exec/system/etc 的任何程序的新实例。为。