У меня есть сценарий Python, который кодирует видео, а затем вызывает сценарий оболочки, который загружает новое видео в Dropbox. Он отлично работает из командной строки, но мне нужно было сделать так, чтобы другие могли его выполнить, поэтому у меня есть PHP-скрипт, вызывающий скрипт Python.
Я не хочу, чтобы скрипт PHP работал вечно (для его завершения требуется 15-30 минут), я просто хочу, чтобы он запускал скрипт Python и все было готово. Я понял, что мне нужно, чтобы это произошло, и, как я уже сказал, это работает в командной строке. Но когда он вызывается через PHP, видео кодируется, но файл никогда не загружается. Я вижу, что скрипт dropbox был запущен и указан как процесс, использующий некоторый процент ЦП, этот процент никогда не меняется, кажется застрявшим / мертвым.
команда выглядит так, будучи запущенной с помощью cmd ()
script.py -options &>/logs/phptopython.log &
Сценарий оболочки запускается с помощью Popen
Какие-либо предложения?
Спасибо
Похоже, это может быть проблема с разрешениями. Дважды проверьте права доступа к каталогу, в который вы пытаетесь загрузить видео. Если вы работаете в Linux, вы можете изменить разрешения для этого каталога следующим образом:
chmod 755 /path/to/dir
Это дает владельцу файла права на чтение, запись и выполнение (7). Группа и другие пользователи получают права на чтение и выполнение (5).
Apache, скорее всего, работает от имени другого пользователя, чем когда вы запускаете команду самостоятельно в bash. Быстрый тест, чтобы увидеть, является ли это проблемой разрешения, состоит в том, чтобы предоставить 777 для этого каталога. Я бы не стал так оставлять — это был бы просто способ быстро определить, являются ли разрешения проблемой.
Если сценарий работает с разрешениями 777, вы можете либо изменить владельца каталога на пользователя, которого запускает Apache, либо добавить пользователя Apache в группу каталога и предоставить группе разрешения на запись.
Редактировать:
Я только что заметил, что вы сказали, что используете cmd (), поэтому я предполагаю, что вы работаете в Windows. Мои комментарии могут быть актуальны, но команда chmod не будет работать в Windows.
Других решений пока нет …