Здравствуйте! Можете подсказать, как реализовать подстановку значений, полученных из формы, в шаблон? Тот код, который есть сейчас: PHP: <?php //создание виртуального хоста Apache if (isset ($_POST['create'])) { //получаем необходимые данные из полей формы $cname = $_POST['cname']; $calias = $_POST['calias']; $cemail = $_POST['cemail']; $ccharset = $_POST['ccharset']; $cindexfiles = $_POST['cindexfiles']; //получаем шаблон из файла $config = file_get_contents ('/***/templates/apachevhost.tpl') or die ('Невозможно получить доступ к файлу'); //путь к новому шаблону $path = "/etc/apache2/sites-available/$cname.conf"; $pathtosave = "/***/panel/$cname.conf"; //записываем наш новый виртуальный хост в файл ... //Выводим получившийся конфигурационный файл и данные из формы (для отладки) echo $config; echo "<br> Имя сайта: $cname"; echo "<br> Алиасы сайта: $calias"; echo "<br> Email администратора сайта: $cemail"; //затем активируем виртуальный хост и перезагружаем веб-сервер ... } ?> Шаблон (apachevhost.tpl): Код (Text): <VirtualHost 127.0.0.1:80> ServerName $cname ServerAlias $calias DocumentRoot /home/$login/www/$cname DirectoryIndex $cindexfiles ServerAdmin $cemail AddDefaultCharset $ccharset AssignUserID $login $login CustomLog /home/$login/logs/$cname.access.log combined ErrorLog/home/$login/logs/$cname.error.log <Directory /home/$login/www/$cname> Require all granted </Directory> </VirtualHost> Что не устраивает в текущем коде: значения не подставляются, форма работает, при любых значениях переменных шаблон остаётся таким же (а переменные печатаются "как есть" - т.е. в выводе $config вижу ServerName $cname ServerAlias $calias и.т.д. Создаётся ощущение, что результат работы функции file_get_contents "заключён в одинарные кавычки" для PHP (если так можно выразиться)
В tpl, на сколько мне известно, обычные переменные не работают. Каждый шаблон нужно обрабатывать (Например как в DLE). Получаешь полную строку всего шаблона, и с помощью str_replace() заменяешь плейсхолдеры на свои переменные.
@redcap функция file_get_contents() не запускает извлеченные данные. Поэтому они выводятся как есть. Для подстановки переменных, следует использовать функцию include() вместо file_get_contents() и превратить шаблон в корректных php-код, то есть писать так: Код (Text): ServerName <?=$cname?> ServerAlias <?=$calias?> и т.д.
Получить готовый конфиг в переменную можно с помощью буферизации Код (Text): ob_start(); include('apachevhost.tpl'); $config = ob_get_clean();