PHP没有正确运行python

时间:2015-04-14 14:08:38

标签: php python csv

我可以让我的脚本运行,但它无法正常运行而且我很困惑。我正在尝试创建一个用户单击按钮的网站,这会导致服务器上的python脚本开始运行。该脚本应该能够打开csv文件,并使用存储在其中的数据。如果我从命令行正常运行它,此脚本可以正常工作。它能够打开csv文件,如果文件不存在,会给我一个错误:

Traceback (most recent call last):
File "LaserProfile.py", line 224, in electrodeData
data = np.loadtxt(filepath, delimiter = ",", skiprows = 2)
File "C:\Anaconda\lib\site-packages\numpy\lib\npyio.py", line 734, in loadtxt
fh = iter(open(fname, 'U'))
IOError: [Errno 2] No such file or directory: '\\\\172.16.113.55\\file_root\\U1\\2015\\03\\566\\Laser\\15997.csv'

基本上,它应该按照应有的方式运行。然而,当python脚本被告知由PHP脚本执行时,它似乎运行正常除了它失去了打开这些csv文件的所有功能,每个都返回一个错误,如下所示:

Traceback (most recent call last): 
File "M:\GitHub\ETL\LaserProfile.py", line 224, in electrodeData 
data = np.loadtxt(filepath, delimiter = ",", skiprows = 2) 
File "C:\Anaconda\lib\site-packages\numpy\lib\npyio.py", line 734, in loadtxt 
fh = iter(open(fname, 'U')) 
IOError: [Errno 22] invalid mode ('U') or filename: '\\\\172.16.113.55\\file_root\\U1\\2015\\04\\617\\Laser\\16687.csv' 

在这两种情况下,脚本都是从同一台计算机上运行的(Windows Server 2012)。我不明白为什么我在这里得到Errno22(特别是因为这是一个直接从命令行运行时正确处理的文件)。

如果有帮助,这是我的PHP:

<?php
    $pyscript = $_REQUEST["q"];
    $clientIP = $_SERVER['REMOTE_ADDR'];
    $basepath = "M:\\GitHub\\ETL\\";
    $pypath = $basepath.$pyscript;
    $hostIP = "172.16.111.45";
    $cmd = "python $pypath $clientIP";
    echo "Executing: $cmd <br /> Result: <br />";
    $result = `$cmd`;
    echo $result;
?>

我正在使用python LaserProfile.py从命令行运行它(脚本尚未使用sys.argv中的任何参数)。

为什么它从命令行运行良好,而不是从PHP运行?

1 个答案:

答案 0 :(得分:1)

您可以这样执行:

$command = escapeshellcmd('python $pypath $clientIP');
$output = shell_exec($command);
echo $output;

还有更多信息Running a python script from PHP