phpから別のファイルを実行する際に問題が発生しました。php paramsを、別のファイル自体を呼び出すpythonファイルを実行した結果にしたいと思います。
これが私のphpファイルです:
<?php
if (isset($_POST['submit'])) {
$params = solve();
}
function solve() {
exec("python array.py", $output);
return $output;
}
?>
array.pyが単純な場合:
if __name__ == "__main__":
print 1
print 2
print 3
print 4
出力として1、2、3、4を取得しますが、array.pyをos.systemを呼び出す次のファイルに変更すると、何も取得されません。したがって、新しいarray.pyは次のようになります。
import os
def main():
os.system("python test.py") #test.py creates tmp.txt with 4 lines w/ values 1,2,3,4
def output():
f = open("tmp.txt", "r")
myReturn = []
currentline = f.readline()
while currentline:
val = currentline[:-1] #Getting rid of '\n'
val = int(val)
myReturn = myReturn + [val]
currentline = f.readline()
f.close()
return myReturn
if __name__ == "__main__":
main()
o = output()
print o[0]
print o[1]
print o[2]
print o[3]
また、test.pyを実行しただけの場合、出力はファイルtmp.txtです。
1
2
3
4
そのため、phpファイルを実行すると、出力tmp.txtがディレクトリに作成されないため、phpからも出力が得られません。array.pyを自分で実行すると、目的の出力が得られ、tmpファイルが作成されるため、なぜこれが発生するのかわかりません。
編集:私は含めるのを忘れました:上記のOSをインポートします。