10

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

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

4

3 回答 3

9

我觉得奇怪的是 filePathC:\\wamp\\.... 可以在 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` 

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

于 2012-05-11T04:11:17.217 回答
4

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

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

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

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

于 2020-10-24T19:31:58.600 回答
0

在 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
于 2019-03-21T05:36:51.053 回答