我正在尝试为我创建的系统创建一个自动安装程序,但唯一的问题是生成一个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);
?>
没有一个变量,我已经查找了可能的问题,但我没有找到任何问题。
我现在
无法对此进行测试,但由于您已将文本包装在双引号中,因此您的服务器正在将变量解析为变量$sqlHost, $sqlUser, ...
等,并在字符串中查找它们的值。尝试像这样转义值,并让我知道它是否按您的预期工作。
<?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
$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);
?>
http://php.net/manual/es/language.types.string.php
问候。