PHP называется Python скрипт - PullRequest
       21

PHP называется Python скрипт

0 голосов
/ 06 декабря 2011

У меня проблема со скриптом Python. Сам скрипт генерирует строку и записывает ее в конце в файл. Это хорошо работает, когда я вызываю скрипт python напрямую.

Но как только я вызываю скрипт python из PHP с помощью exec (), он больше не может записывать в файл.

В питоне я просто использую:

try:
    FILE = open(filename,"w")
    FILE.write(mystring)
except IOError:
    print 'cannot open', filename

и PHP вызывает скрипт python так:

$command = 'python myscript.py input1 input2 > /dev/null &';
exec($command, $stdout, $error);

Кто-нибудь знает, что делать, чтобы решить проблему?

Ответы [ 3 ]

1 голос
/ 06 декабря 2011

невозможно записать в файл

Какое сообщение об ошибке вы получаете?Я заметил, что вы сообщаете об ошибке в скрипте Python, используя прямую печать в stdout и перенаправляя stdout в / dev / null при запуске.Строка stderror является полезной частью исключения IOError.Вы можете изменить except на что-то вроде этого:

except IOError, err:
    sys.stderr.write("Could not open "+ err.filename + ": " + err.strerror + "\n")   

или вы можете использовать stdout и перенаправить вывод в реальный файл вместо / dev / null - по крайней мере, до тех пор, пока вы не устраните проблему.

0 голосов
/ 21 августа 2014

Существует системная функция, которую вы можете найти в руководстве по PHP: http://php.net/manual/en/function.system.php

$var = system('python sample.py myargs', $ref);
0 голосов
/ 06 декабря 2011

Является ли filename относительным или абсолютным путем?Я бы порекомендовал использовать абсолютные пути, чтобы ваш скрипт работал, как бы он ни назывался - например, "/home/matt/scripts/python/test.txt" - это абсолютный путь.

Это распространенная ошибка для скриптов, вызываемых другими скриптами или вызываемых системными событиями или cronjobsи т.д.

Надеюсь, что поможет

...