-1

PHP (LAMP) から Python スクリプトを実行したいと思います。スクリプトは astropy をインポートしますが、何らかの理由でそれを正常に行うことができません。以下にコピーしたサンプル ファイルを使用して、基本的な問題を再現できます。パーミッションや Python パスの問題ではないと思います。たとえば、numpy、scipy などをインポートできます。同じディレクトリ (/www/var) のファイルを読み書きする Python スクリプトを作成することもできます。/usr/bin/python に標準の Python と Anaconda バージョンがあります。どちらにもアストロピーがあり、どちらを使用しても同じ問題が発生します。

コードを自分自身 (正常に動作する) または www-data (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.py:

print("this is test.py ...")

import sys, numpy, scipy, matplotlib
print("passed the import sys, numpy, scipy, matplotlib ...")

import astropy
print("passed the import astropy ...")

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
4

1 に答える 1