Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PHP导入astropy调用Python_Php_Python_Astropy - Fatal编程技术网

从PHP导入astropy调用Python

从PHP导入astropy调用Python,php,python,astropy,Php,Python,Astropy,我想从PHP(LAMP)运行Python脚本。脚本导入astropy,由于某种原因,我无法成功地做到这一点。我可以用下面复制的示例文件重现基本问题。我认为这不是权限或Python路径问题。例如,我可以导入numpy、scipy等。我还可以创建一个Python脚本来读取和写入同一目录(/www/var)上的文件。我在/usr/bin/Python上有标准的Python,还有Anaconda版本。两者都有astropy,无论使用哪一种,我都会遇到相同的问题 我怀疑这是关于以我自己的身份(工作正常)或

我想从PHP(LAMP)运行Python脚本。脚本导入astropy,由于某种原因,我无法成功地做到这一点。我可以用下面复制的示例文件重现基本问题。我认为这不是权限或Python路径问题。例如,我可以导入numpy、scipy等。我还可以创建一个Python脚本来读取和写入同一目录(/www/var)上的文件。我在/usr/bin/Python上有标准的Python,还有Anaconda版本。两者都有astropy,无论使用哪一种,我都会遇到相同的问题

我怀疑这是关于以我自己的身份(工作正常)或www数据(从web浏览器)运行代码的问题。但是,当我在Linux终端sudo-u www-data-php-test.php上执行此操作时,代码会按预期工作

这是test.php:

<?php

echo "<p>begin test.php</p>";
system("python test.py");
echo "<p>end test.php</p>";

?>
当我打开test.php时,我得到的是:

begin test.php
this is test.py ... passed the import sys, numpy, scipy, matplotlib ... ERROR: TypeError: coercing to Unicode: need string or buffer, NoneType found [genericpath]

end test.php

你在运行什么版本的Astropy?顺便说一句,我很确定这是一个已知且已解决的问题:

此外,Astropy的当前版本要求您指定库可以写入的配置目录。它不一定知道/var/www是用于Web服务器的正确“home”目录,因此需要设置环境变量
XDG\u CONFIG\u home=/var/www
(确保
/var/www/astropy
目录也存在)


我认为有计划对此进行简化,这样库至少可以在没有额外设置的情况下导入。

我使用的是astropy的0.2.3版。我在php文件中添加了这一行:putenv(“XDG_CONFIG_HOME=/var/www/astropy”);并检查它是否在我的py代码:print(os.environ['XDG\u CONFIG\u HOME'])上起作用。它似乎没有问题,但仍然得到相同的结果。您是否先手动创建了
/var/www/astropy
目录,并给了www数据用户写入该目录的预授权?astropy dev邮件列表上的这个线程可能会有所帮助:是的,我创建了目录并允许访问www数据。我的错误是将XDG_CONFIG_HOME定义为/var/www/astropy。正确的方法是将其定义为/var/www。在前面的回复中提供的链接为我澄清了这一点。问题解决了!谢谢你,iGuanaut。对不起,那是我的错误,你把它设置为
/var/www/astropy
,我会在答案中解决。我更新了我的答案顺便说一句——如果这对你有效,你能接受答案吗?谢谢
begin test.php
this is test.py ... passed the import sys, numpy, scipy, matplotlib ... ERROR: TypeError: coercing to Unicode: need string or buffer, NoneType found [genericpath]

end test.php