在windows下从php执行python脚本

kni*_*dan 7 php python command-line

好的,这适用于我的Linux服务器,但我正在我的PC上测试我的网站,我正在尝试让PHP执行我的python脚本,当然\是WINDOWS只有当我在我的linux机器上时路径改变.

$pyscript = 'C:\\wamp\\www\\testing\\scripts\\imageHandle.py';
$python = 'C:\\Python27\\python.exe';
$filePath = 'C:\\wamp\\www\\testing\\uploads\\thumbs\\10-05-2012-523.jpeg'


exec('$python $pyscript $filePath', $output, $return );
Run Code Online (Sandbox Code Playgroud)

这适用于我的linux机器,但不适用于我的Windows测试服务器.如何让它在Windows上运行?哦,这也适用于直接从Windows命令提示符运行

编辑:

这是解决方案,因为您可以在答案中阅读.

$cmd = "$python $pyscript $filePath";
exec("$cmd", $output);
Run Code Online (Sandbox Code Playgroud)

奇迹般有效.将单个刻度改为双倍.

小智 7

我觉得奇怪的是filePath C:\\wamp\\.... 可以在Linux机器上运行.无论如何,你有没有试过逃避斜线?

该问题可能与几个方面有关,包括实现不同程序执行功能的OS特定方法.我建议只是通过不同的选项,我总是将命令放入一个变量,然后打印出变量,这样我就可以看到我要运行的内容,如果你看到两个斜杠,那么你可能知道没有需要尝试逃避斜线,但无需将其打印到您不知道的屏幕上.

尝试浏览其他流程执行函数,看看哪些适合您. http://www.php.net/manual/en/ref.exec.php

我找到的那个工作MOST就像在命令行运行它一样,是反引号运算符,然后是 system

尝试这样的事情.

$pyscript = 'C:\\wamp\\www\\testing\\scripts\\imageHandle.py';
$python = 'C:\\Python27\\python.exe';
$filePath = 'C:\\wamp\\www\\testing\\uploads\\thumbs\\10-05-2012-523.jpeg'

$cmd = "$python $pyscript $filePath";
echo $cmd;
`$cmd`


$pyscript = 'C:\wamp\www\testing\scripts\imageHandle.py';
$python = 'C:\Python27\python.exe';
$filePath = 'C:\wamp\www\testing\uploads\thumbs\10-05-2012-523.jpeg'

$cmd = "$python $pyscript $filePath";
echo $cmd;
`$cmd` 
Run Code Online (Sandbox Code Playgroud)

编辑:啊哈!我只是弄明白了,你用单个刻度''围绕你的命令,这意味着里面的变量没有被替换.请改用双引号.这将解决问题,但我仍然建议在运行之前回显命令,以便您可以看到正在运行的命令,并且您将能够识别出这样的问题.


Zso*_*lla 6

这是一个非常古老的线程,但仍然出现在 Google 的第一个结果中,因此值得更新。

2020 年,Python 3.8正确Windows 10的解决方案很简单:

<?
$output = shell_exec('C:\path\to\pythonscript.py');
print ($output);
?>
Run Code Online (Sandbox Code Playgroud)

其他一切都会导致错误。我花了好几个小时才弄清楚。