【问题标题】:executing python script from php under windows在windows下从php执行python脚本
【发布时间】:2012-05-19 16:32:07
【问题描述】:

好的,这适用于我的 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 );

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

编辑:

这是解决方案:

exec("$python $pyscript $filePath", $output);

我之前用单引号代替双引号,把单引号改成双引号解决了这个问题。

【问题讨论】:

  • 如何将变量(参数)从php传递给python??

标签: php python command-line


【解决方案1】:

我觉得 C:\\wamp\\.... 的 filePath 可以在 Linux 机器上工作很奇怪。 无论如何,您是否尝试过不转义斜线?

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

尝试查看其他流程执行功能,看看哪些适合您。 http://www.php.net/manual/en/ref.exec.php

我发现最像在命令行运行它的一个是反引号运算符,然后是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` 

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

【讨论】:

  • AHHHHH 你说的太对了!!一只蜱虫杀死了它!谢谢!
  • 如何将变量(参数)从php传递给python??
【解决方案2】:

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

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

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

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

【讨论】:

    【解决方案3】:

    在 XAMPP SERVER 中我的 index.py 文件是这样的

    from wordsegment import load, segment
    load()
    print(segment('morerecentlythedevelopmentwhichisapotent'))
    

    我的 index.php 文件是这样的

    <html>
    <head>
      <title>py script</title>
    </head>
    
    <body>
      <h1>Hey There!Python Working Successfully In A PHP Page.</h1>
      <?php
        $python = `python index.py`;
        echo $python;
        ?>
    </body>
    </html>
    

    现在运行 index.php 文件。

        Hope this will help you
    

    【讨论】:

      最近更新 更多