Я пытаюсь создать автоматический установщик для системы, которую я создал, но единственная проблема - генерация php-файла, в котором переменные просто не отображаются.PHP текст отсутствует, возможно регулярное выражение?
Вот мой код, чтобы создать файл
<?php
$content = " <?php
$sqlHost = '".$host."';
$sqlUser = '".$user."';
$sqlPass = '".$pass."';
$sqlDatabase = '".$db."';
$sqlTables = array('donate_categories', 'donate_items', 'donate_claim', 'donate_admin');
$connection = new PDO('mysql:host='.$sqlHost.';dbname='.$sqlDatabase.';charset-utf8', $sqlUser, $sqlPass);
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
?>";
$fp = fopen("connection.php", "wb");
fwrite($fp, $content);
$fclose($fp);
?>
, как вы можете видеть, что есть PHP код, завернутый в строке там; Однако выход немного странно ...
<?php
= 'localhost';
= 'root';
= '';
= 'test';
= array('donate_categories', 'donate_items', 'donate_claim', 'donate_admin');
= new PDO('mysql:host='..';dbname='..';charset-utf8', ,);
(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
?>
Ни одна из переменных не существует, и я посмотрел возможные проблемы с этим, но я не нашел ни одного.
Попробуйте 'error_reporting (E_ALL);'. Двойные кавычки интерполируют переменные. – mario
Сама проблема может быть легко устранена путем экранирования символов '' '(или переключения двойных кавычек на одинарные кавычки), но _why_ вы хотите сделать это? В чем именно смысл использования PHP-кода генерировать больше PHP-кода? – NullUserException
Это кажется хорошим вариантом использования для heredoc, а не для этой запутанной конкатенации. http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc. '$ connection' все равно потребуется' \ $ 'экранирование. –