Измените настройки open_basedir
в вашей конфигурации PHP (см. Настройка времени выполнения ).
Параметр open_basedir
в основном используется для предотвращения PHP-скрипты для конкретного пользователя от доступа к файлам в учетной записи другого пользователя. Как правило, любые файлы в вашей учетной записи должны быть прочитаны вашими собственными скриптами.
Пример настроек с помощью .htaccess
, если PHP работает как модуль Apache в системе Linux:
php_admin_value open_basedir "/home/sites/site81/:/tmp/:/"
Вероятно, что ffmpeg
и alprd
пытаются взаимодействовать с одинаковыми дескрипторами файла stdin / stdout. Чтобы решить эту проблему, создайте отдельные каналы для одного или обоих подпроцессов, чтобы использовать их как stdin / stdout. Тогда они могут взаимодействовать с ними, не мешая друг другу.
import subprocess
with open('ffmpeg-output.txt', 'w') as ffmpeg_output:
ffmpeg = subprocess.Popen(
['ffmpeg', '-i', 'input', 'output'],
stdin=subprocess.PIPE,
stdout=ffmpeg_output,
stderr=subprocess.STDOUT)
# We won't be sending any input into ffmpeg's stdin, so close it.
ffmpeg.stdin.close()
# alprd inherits stdin, stdout, and stderr from the current process.
alprd = subprocess.Popen(['alprd', '-f'])
# Wait for the subprocesses to finish.
ffmpeg.wait()
alprd.wait()