Назад | Перейти на главную страницу

невозможно запустить сгенерированный скрипт python (selenium) из PHP

У меня есть машина Ubuntu для безголовых тестов на селен.

Я генерирую скрипт python в /var/www/tmp/random123name.py через PHP и выполняю их. Сценарий работает при запуске из командной строки пользователя, не работает при запуске из Интернета (apache www-data: www-data user).

Скрипт вызывает некоторые системные / Python модули:

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from time import sleep, strftime
import os, json
from pyvirtualdisplay import Display

Этот код возвращает 1:

$python = "sudo /usr/bin/python /var/www/tmp/random123name.py";
exec($python, $output, $return);
echo "OUT<pre>".print_r($output,1)."</pre>"; #returns empty
echo "RET<pre>".print_r($return,1)."</pre>"; #returns 1

Я безуспешно изменил / etc / sudoers:

www-data ALL=(ALL:ALL) NOPASSWD: /usr/bin/python

Я тоже пробовал

www-data ALL=(ALL:ALL) NOPASSWD: /usr/bin/python /var/www/tmp/

добавлены www-данные в группу dialout и другие попытки. Спасибо за Вашу поддержку.

Как вы сами выяснили, меняется на sudoers не применяются к текущим сеансам, только к новым сеансам. Поэтому вам нужно выйти и снова войти, чтобы увидеть это.

Но что более важно, вам не нужно sudo для этой цели и позволяя www-data пользователь для запуска python так как root без пароля крайне страшно. Конечно, есть способ заставить ваш скрипт работать без необходимости root привилегии, как обычный пользователь, и я настоятельно рекомендую вам попытаться понять это, а не прибегать к sudo для этого.

Я решил: недостаточно выйти обратно в youruser / root, вам нужно выйти из сеанса ssh и снова открыть его, чтобы загрузить все необходимое для работы visudo.