Intereting Posts
синтаксическая ошибка в случае «удалить» при уменьшении В чем разница между if (! Variable) и if (isset ($ variable))? Объединение png на многоугольник в php Как передать апострофии из текстовых областей в MySQL с помощью PHP Переменные переменные, указывающие на массивы или вложенные объекты MYSQL Подсчитать все строки и разбиение на страницы данных с использованием диапазона / предела Силовой браузер для загрузки изображения с помощью javascript window.open? Не удается отправить сеанс cookie – уже отправлены заголовки PHPUnit / Laravel Как я могу заполнить выпадающий список, выбрав значение из другого раскрывающегося списка? работают ли сеансы, когда файлы cookie отключены? Как вычесть microtime и дату показа с миллисекундами в php? Есть ли хорошие библиотеки php, которые могут конвертировать html / php документы в объекты file_get_contents (): ограничение open_basedir Передать переменные с url в php, поскольку я интегрирую платежный шлюз в wordpress payu Установка PEAR и PHPUnit с помощью xampp

Сценарий Bash, выполняемый PHP exec (), не выполняет перенаправление должным образом

У меня есть сценарий, который принимает некоторые параметры и перенаправляет вывод heredoc в другой файл, чтобы создать файл виртуального хоста для веб-сервера. Когда я запускаю скрипт в командной строке, он выполняется отлично, и файл создается, но когда я запускаю его с помощью PHP exec или shell_exec, он не создает файл. Все остальное (повторение или попытка просто вернуть результат вместо перенаправления) выполняется отлично – просто создание файла не происходит, и я не вижу никаких признаков того, что возникла проблема.

Вот мой код: create_vhost.sh:

#!/bin/bash #Use the template to create the vhost file echo "Creating vhost file in sites-available" sudo /absolute/path/to/vhost_template.sh $1 $2 > /etc/nginx/sites-available/$2 service nginx restart 

Я запускаю вышеуказанный скрипт так: /absolute/path/to/create_vhost.sh site_id domain.com и он отлично работает с использованием ssh с Terminal.

Для справки файл vhost_template выглядит так:

 #!/bin/sh SITE_ID=$1 DOMAIN=$2 #define the template. cat << EOF [template code here with $SITE_ID and $DOMAIN parameters somewhere] EOF 

Однако, если я запустил его в PHP так:

 return shell_exec("/absolute/path/to/create_vhost.sh site_id domain.com"); 

Я получаю вывод просто отлично, но файл не создается! И, как я уже сказал, если я отброшу перенаправление, то даже в PHP я вижу вывод файла шаблона без проблем.

Я смотрел на это часами, но я просто в тупике. Какие-либо предложения?

EDIT: Просто подумал, что я бы упомянул, что я думал, что это, вероятно, проблема с правами, но я попытался использовать sudo в shell_exec () и с помощью visudo предоставить привилегии пользователя sudo для WWW-данных. Еще одна проблема …