我试图为我创建的系统创建一个自动安装程序,但唯一的问题是生成一个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);
?>
没有任何变量,我已经查找了可能存在的问题,但我还没找到。
答案 0 :(得分:4)
我现在无法对此进行测试,但由于您已将文本用双引号括起来,因此您的服务器将变量$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);
?>
答案 1 :(得分:0)
使用单引号,因为它试图将变量替换为字符串。
<?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
问候。