0

次のようにbar.phpからpythonコードを呼び出そうとしています

$cmd = "python foo.py";
system($cmd);

問題なく動作します。ただし、foo.py はファイルをディスクに保存する必要があります。そして、それはありませんでした。Webサーバーを実行しているユーザーがwww-dataであることがどういうわけかわかりました。

ユーザーwww-data $ php bar.phpを使用してコマンドラインからphpスクリプトを実行しようとしましたが、問題なく実行され、ファイルが保存されたので、ユーザーwww-dataにはディレクトリへの書き込み権限が必要です。

「他のユーザーの役に立たないだろう」という投票があることに気付きました。ただし、php サービスがあり、Python などの他の言語で記述されたコードがある場合は、これを知っておく必要があります。

すべての提案に感謝します。

b/c だと思います。foo.py の Python コードで Matplotlib を使用しています。次のようなコードがあります。

pl.scatter(data,...)
pl.plot(data,...)
pl.legend()
pl.save('path/to/bam.png')

たぶん、Webから呼び出すと、画像を描画できます。それは可能ですか?もしそうなら、それを修正する方法はありますか?ありがとう!

4

1 に答える 1

2

あなたが提供している情報の量から推測することしかできませんが、これはあなたの問題だと思います。Pythonスクリプトはおそらく相対パスを使用しています。つまり、スクリプトが作成するファイルは、作業ディレクトリまたは相対パスに表示されます。

これを確認し、ファイルが現在どこにあるかを確認するために、Pythonで現在の作業ディレクトリを印刷できます。

import os
print os.getcwd()

そして、それを修正するには、代わりにpythonスクリプトに相対的なパス、または絶対パスを使用します。例:

import os
basedir = os.path.abspath(os.path.dirname(__file__))

file_path = os.path.join(basedir, 'my-file-name.txt')
于 2012-12-14T07:43:29.893 に答える