0

我很想让安装文件使用下面的字符串创建配置文件,但我不断收到此错误:解析错误:语法错误,意外的 T_CONSTANT_ENCAPSED_STRING in...

$tempcon = '
<?php
// Give Usage string for Config File
if(isset($_GET["gimi"])) {
  die('"' . str_replace('\\','\\\\',__FILE__) . '"'); // <--- The error is on this line!
}
$dbhost = "'. $_POST["dbhost"] .'";             // Database Host Address
$dbname = "'. $_POST["dbname"] .'";             // Database Name
$dbuser = "'. $_POST["dbuser"] .'";             // Database Username
$dbpass = "'. $_POST["dbpass"] .'";             // Database Password

?>';

我究竟做错了什么?

提前致谢,

罗伯特

4

3 回答 3

2

您需要转义'字符串中的 。

于 2012-05-05T23:19:26.267 回答
0

您的最后四个字符串分配似乎被破坏了。我建议使用 heredoc/nowdoc 来避免出现问题。

编辑:除此之外,您似乎正在使用 php 编写一个 php 文件,以动态连接到由用户控制的另一个数据库。这有一种难闻的气味......你能描述一下你想要做的更多吗?必须有更好的方法来完成它。

于 2012-05-05T23:22:30.680 回答
0

您(当前)遇到的解析错误是由于数组索引上的引号引起的 - 尽管您的 die() 也会给您带来麻烦,正如 Musa 指出的那样。更好的解决方案:使用heredoc

<?php
$tempcon = <<<PHPCODE
<?php
// Give Usage string for Config File
if(isset({$_GET["gimi"]})) {
    die('"' . str_replace('\\','\\\\',__FILE__) . '"'); // <--- The error is on this line!
}
$dbhost = "'. {$_POST["dbhost"]} .'";             // Database Host Address
$dbname = "'. {$_POST["dbname"]} .'";             // Database Name
$dbuser = "'. {$_POST["dbuser"]} .'";             // Database Username
$dbpass = "'. {$_POST["dbpass"]} .'";             // Database Password

?>
PHPCODE;
于 2012-05-06T03:14:08.697 回答