2016-08-09 2 views
-3

Мне нужно создать новый .php-файл в качестве файла конфигурации подключения MySQL. У меня есть список, как это:Создайте еще один PHP-файл с PHP-скриптом

$fileLocation = $_SERVER['DOCUMENT_ROOT'] . "/dbconnect.php"; 
file_put_contents($fileLocation,$content); 
$content = "<?php $koneksi = mysql_connect('.$host.', '.$username.', '.$password.'); //open connection 
if(! $koneksi) //if fail 
{ 
    die(\'Gagal Koneksi: \' . mysql_error()); 
} 
echo \'Koneksi Berhasil\'; ?>"; 

я получаю $username, $host и $password из другого файла (содержащей форму для хоста, имя пользователя и пароля) с помощью метода поста.

И я хочу создать файл в корневом каталоге, я сделал этот код, и он не работает. Я пробую fwrite и не работает. Я Google это, но я не совсем понимаю, что я читаю.

Как мне это сделать?

+0

Почему у вас есть '.' перед ... Подождите, что? –

+2

Я довольно уверен, что любая проблема, которую вы решили решить таким образом, имеет гораздо лучший способ решения. – apokryfos

+0

Я просто изучаю php за 2 дня – kucing

ответ

0

Вам нужно передать параметры в виде строки:

mysql_connect("'.$host.'", "'.$username.'", "'.$password.'"); 

И да, это выглядит как X-Y проблемы, которые необходимо решить, где ваша проблема может быть решена лучше, чем это.

Примечание: Не используйте mysql_* функции, так как они устарели и удалены.

0

Я стараюсь FWRITE и не работает

Проблема почти наверняка прав доступа к каталогу. У вашего PHP-скрипта нет разрешения на запись вашего файла в корневую директорию, о которой вы упоминаете.

Однако ...

Я хочу, чтобы создать файл в корневой директории

То, что вы в настоящее время пытаются сделать вид, что вы создаете риски для безопасности. Вы позволяете пользователю вводить значения в форме, которые затем вводятся в ваш скрипт без какой-либо сантинизации. Затем вы пишете этот файл на сервер. Неясно, имеете ли вы корневую директорию сервера или корень веб-сайта.

MySQL Расширение Предупреждение

Начиная с PHP 5.5, то MySQL расширение и его функции устарели. Вы должны, как минимум, использовать улучшенное расширение MySQLi.

Заключение

Судя по вашему коду, и самопровозглашенный отсутствие понимания, я бы посоветовал не принимать текущее решение дальше прямо сейчас. Вы потенциально открываете все виды рисков безопасности, не говоря уже о том, что почти наверняка лучший способ достичь своей цели.

Я бы посоветовал, как минимум, вы читали на следующее, прежде чем продолжить:

И если вы хотите, чтобы продолжить, могут найти помощь по этому аналогичному вопросу:

+0

Я имею в виду корневую папку моего приложения. Поскольку файл, который создает новый файл, находится в/myapp/install /. Я хочу найти новый файл в/myapp/ – kucing

+0

@kucing Да, я понимаю, и если файл не записывается на сервер, это, вероятно, означает, что разрешения каталога 'myapp/install' не установлены, чтобы разрешить веб-сервер для записи файла. Но, пожалуйста, объясните, чего вы пытаетесь достичь, потому что это не выглядит разумным или правильным. – BadHorsie

0

Вы не должны делать file_put_contents($fileLocation, $content) только до создания $content, потому что $content не существовало бы раньше ... Это как-то четко понятно. Ваш код должен выглядеть примерно так:

<?php 

    // LET US ASSUME YOU ARE GETTING YOUR DB-CONNECTION DATA FROM ANY SOURCE AT ALL 
    // AND THE DATA ARE AS FOLLOWS: $host, $username, $password; 
    // SO THAT WE HAVE SOMETHING LIKE — 
    $host   = "localhost"; 
    $username  = "user"; 
    $password  = "pass"; 

    // IF YOU WANT THE FILE TO BE LOCATED IN /myapp DIRECTORY 
    // THEN GO UP ONE DIRECTORY ABOVE THE CURRENT DIRECTORY: /myapp/install 
    $fileLocation = __DIR__ . "/../dbconnect.php"; 

    // FIRST BUILD YOUR CONTENT... ALSO REMEMBER TO ADD NEW LINES & TABS... 
    $content  = "<?php\n\n\t\$koneksi = mysql_connect('{$host}', '{$username}', '{$password}');"; 

    // NOW; CHECK IF THE FILE IN QUESTION EXISTS OR NOT 
    // SO YOU DON'T HAVE TO RECREATE IT EACH TIME THIS SCRIPT RUNS... 
    if(!file_exists($fileLocation)){ 
     file_put_contents($fileLocation, $content); 
    } 

    // REMEMBER TO INCLUDE THE DB-CONNECTION FILE YOU JUST CREATED IN THE CURRENT SCRIPT 
    // OTHERWISE IT WILL NOT BE AVAILABLE TO YOUR SCRIPT... ;-) 
    require_once $fileLocation; 

    if(! $koneksi){ 
     die('Gagal Koneksi: ' . mysql_error()); 
    } 
    echo 'Koneksi Berhasil'; 

ЭФФЕКТИВНО:

<?php 

    $fileLocation = __DIR__ . "/../dbconnect.php"; 
    $content  = "<?php\n\n\t\$koneksi = mysql_connect('{$host}', '{$username}', '{$password}');"; 
    if(!file_exists($fileLocation)){ 
     file_put_contents($fileLocation, $content); 
    } 

    require_once $fileLocation; 

    if(! $koneksi){ 
     die('Gagal Koneksi: ' . mysql_error()); 
    } 
    echo 'Koneksi Berhasil'; 
Смежные вопросы