问题描述
<?PHP
echo shell_exec("python wamp64/www/PHP Test/TestPython.py 'param1' 'param2'")
?>
Python文件:
import sys
x = sys.argv[1]
y = sys.argv[2]
print (x)
print (y)
当我运行PHP文件时,它没有显示X和Y。这些文件位于同一文件夹中,而我已经尝试过仅输入文件名而不是完整文件夹,但这也不起作用。有谁知道为什么它不起作用? 我正在将WAMP用于PHP和Python 3.9.0。
解决方法
我不确定您是否还需要回答您的问题,但是在我的本地 Windows 计算机上到处尝试了一些东西后,我认为问题可能归结为您的 PHP 文件中的部分是目录名中的空格。特别是“PHP 测试”部分。在 Windows 中,根据过去的经验和之前的检查,当文件夹名称中有空格时,您需要以某种方式在文件夹名称周围添加某种引号(我喜欢在整个文件周围加上双引号路径,如果需要这样做)。
因此,根据我在本地计算机上尝试的示例,如果您要将 PHP 文件更改为类似于以下内容:
<?php
echo shell_exec('python "wamp64/www/PHP Test/TestPython.py" "param1" "param2"')
?>
它可能会按预期工作。我改变了使用的引号类型,外引号是单引号,内引号是双引号。
当我运行这样的示例时(注意:“用户名”替换了实际用户名):
<?php
echo shell_exec('python "C:\Users\username\Documents\Space Text\TestPython.py" "param1" "param2"')
?>
我得到这个结果(注意:“用户名”替换了实际用户名):
PS C:\Users\username\Downloads\php-7.4.15-nts-Win32-vc15-x64> .\php.exe C:\Users\username\Documents\"Space Text"\test.php
param1
param2
如果这仍然不起作用,我会确保您在 PHP 代码中使用 TestPython.py
文件的完整路径。要在 Windows 中查找完整路径,我通常会尝试使用 Windows 文件资源管理器查找有问题的文件(这次是 TestPython.py
)。找到该文件后,如果单击 Windows 文件资源管理器标题的文件路径部分,它应该将路径缩减为一行文本,可以将其复制并粘贴到 PHP 文件中。您可能还需要在此复制/粘贴行的末尾添加最后的 TestPython.py
部分。
另外,据我所知,我还没有使用过 WAMP,所以我不知道你的 PHP 代码中的文件路径到 TestPython.py
文件是否需要在 { 前面有任何东西{1}} 部分。例如,wamp64
目录是否位于 wamp64
目录中的某个位置?如果是这样,您可能需要在 C:\
部分之前添加文件路径(如果有);也许像wamp64
这样的东西。不过,这部分可能不是必需的,但想将其添加为注释。
这是一个简单的解决方案。假设你的目录是 C:\Users\username\Desktop\XAMPP\htdocs\Project
Project
|__ python_filename.py
|__ php_filename.php
python_filename.py
import sys
x = sys.argv[1]
y = sys.argv[2]
print(x,y)
php_filename.php 文件
<?php
echo shell_exec("python /Users/username/Desktop/XAMPP/htdocs/Project/python_filename.py param1 param2")
?>
输出
param1 param2