Попытка выполнить команду python через php, но ошибки разрешения

#php #python

#php #python

Вопрос:

Я загрузил файл изображения и скопировал его из временной папки в папку внутри /var/www/. Затем попытался выполнить команду python через php, где команда exec() имеет следующий формат.

 exec('python file.py $_FILES["file"]["name"]');
 

и даже выполнение следующего не работает,

 exec('python file.py'   $_FILES["file"]["name"]);
 

На стороне python я пытаюсь прочитать имя файла, выполнить некоторую обработку и сохранить изображение.

 source = cv2.imread(sys.argv[1])
#some processing    
cv2.imwrite("upload/result.png", resultimage)
 

Примечание: загруженные изображения отображаются как принадлежащие www-data group после загрузки. Я добавил своего пользователя в группу www-data и также выполнил следующее.

 sudo chown -R tilaprimera:www-data upload

sudo chmod -R g s upload
 

где здесь загружается моя папка, в которой хранятся загруженные изображения. Я также сделал исполняемый файл скрипта python,

 sudo chmod  x script.py 
 

а также script.py отлично работает нормально, так как

 ./script.py 
 

Почему скрипт python не выполняется через php?

Ответ №1:

В файле скрипта python изменение каталога было выполнено как

 os.chdir('/var/www/upload')
 

и на стороне php я указал полный путь для запуска скрипта python

 exec('python /var/www/upload/script.py ' . $_FILES["file"]["name"]);
 

Таким образом, проблема была решена.