Выполнение bash скрипта из php

88
13 марта 2021, 21:20

Я пытаюсь реализовать привязку домена к серверу средствами php и нескольких bash скриптов. В первом скрипте я устанавливаю домен в апач, во втором я устанавливаю на домен letsencrypt сертификат при помощи certbot'а. Из-под ssh под рутом все скрипты работают отлично.

Вот скрипт установки домена в апач:

#!/bin/bash
echo "
<VirtualHost *:80>
    ServerName $1
    ServerAdmin webmaster@localhost
    DocumentRoot $2
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<Directory $2>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>
" > "/etc/apache2/sites-available/$1.conf"
a2ensite $1
service apache2 restart
service apache2 status

Вот скрипт установки сертификата:

certbot --authenticator webroot --webroot-path $2 --installer apache -d $1 --redirect
service apache2 restart
service apache2 status

Вызываю из PHP я их примерно одинаково:

$result = exec(
    "'bwV32GnQXc66' | sudo -S " . $_SERVER['DOCUMENT_ROOT']."/php/bash/add_domain.sh " . escapeshellcmd($value) . " " . $_SERVER['DOCUMENT_ROOT'],
    $output
);

И это не работает... Помогите разобраться, пожалуйста, или подскажите какой-то другой метод. Спасибо!

READ ALSO
Передача get-параметров при php-роутинге

Передача get-параметров при php-роутинге

возникла проблема при отправке get-запросов на сайт с простым php-роутингом

97
с каким ключом COUNT() sql падает в массив $result

с каким ключом COUNT() sql падает в массив $result

делаю запрос к двум таблицам, через count получаю кол-во коментариев

96
Авторизация по mac через порт api в php

Авторизация по mac через порт api в php

Авторизация через через php на порт api происходит через ip, логин и пароль

85