Создание установочного скрипта - PullRequest
0 голосов
/ 04 июля 2010

Я пытаюсь создать установщик, используя комбинацию fwrite и форм.Вот мой код:

<?php
$myFile = "db_config.php";
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh, "$host = " . $_POST['host'] . ";\n $username = " . $_POST['username'] . ";\n     $password = " . $_POST['password'] . ";\n $name = " . $_POST['name']";" ;);
fwrite($fh, 'mysql_connect("{$host}", "{$db_username}", "{$db_password}")\n or     die(mysql_error());\n mysql_select_db("{$db_name}")\n or die(mysql_error()); ?>' ;);
fclose($fh); 
?>

Вот ошибка:

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home2/runetyco/public_html/ballpointradio/new/install_action.php on line 4

Ответы [ 4 ]

2 голосов
/ 04 июля 2010

довольно много проблем ... отсортировано

<?php
$myFile = "db_config.php";
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh, '<?php' . PHP_EOL . '$host = "' . $_POST['host'] . '";' . PHP_EOL . '$username = "' . $_POST['username'] . '";' . PHP_EOL . '$password = "' . $_POST['password'] . '";' . PHP_EOL . '$name = "' . $_POST['name'] . '";' . PHP_EOL );
fwrite($fh, 'mysql_connect($host, $db_username, $db_password)' . PHP_EOL . 'or die(mysql_error());' . PHP_EOL . 'mysql_select_db($db_name) or die(mysql_error());' . PHP_EOL);
fclose($fh);

примечание: я бы не рекомендовал делать это таким образом, обычно гораздо лучше просто написать простой файл конфигурации и сохранить весь код в статическом состоянии, но приведенный выше ответ на ваш вопрос об ошибке, которую вы получаете.

2 голосов
/ 04 июля 2010

Вам не хватает . в конце строки

[...]. $_POST['name'] . [<--] ";" ;)
0 голосов
/ 04 июля 2010

Причина, по которой он выдает ошибку, состоит в том, что он ищет переменную $ host в строке 4 - если вы измените двойные кавычки на одинарные, это должно решить проблему - см. Ниже:

<?php
$myFile = "db_config.php";
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh, '$host = ' . $_POST['host'] . ';\n $username = ' . $_POST['username'] . ';\n $password = ' . $_POST['password'] . ';\n $name = ' . $_POST['name'] . ';\n\n';
fwrite($fh, 'mysql_connect("{$host}", "{$db_username}", "{$db_password}")\n or die(mysql_error());\n mysql_select_db("{$db_name}")\n or die(mysql_error()); ?>' ;);
fclose($fh); 
?>
0 голосов
/ 04 июля 2010

проблема может быть в ?>. вам придется избежать этого. Кроме того, вы не помещаете <?php в начало вашего файла конфигурации.

почему вы хотите, чтобы это был php файл? почему бы не использовать INI-файл и parse_ini_file () , или, возможно, XML?

...