簡體   English   中英

在windows下從php執行python腳本

[英]executing python script from php under windows

好的,這適用於我的 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);

我之前用單引號代替雙引號,把單引號改成雙引號解決了這個問題。

我覺得奇怪的是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` 

編輯:啊! 我剛剛想通了,你用單個勾號 '' 包圍了你的命令,這意味着里面的變量沒有被替換。 請改用雙引號。 這將解決問題,但我仍然建議您在運行之前回顯該命令,以便您可以看到正在運行的命令,並且您將能夠識別出這樣的問題。

這是一個非常古老的線程,但仍然出現在谷歌的第一個結果中,所以值得更新。

2020 年,在Python 3.8Windows 10 ,正確的解決方案很簡單:

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

其他一切都會導致錯誤。 我花了好幾個小時才弄清楚。

在 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM