подключение к sql из конфиг-переменных вызывает ошибку (код php) - PullRequest
0 голосов
/ 14 мая 2018

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

'Ошибка: не удалось подключиться: доступ запрещен для пользователя'thing'@'server.com' (с использованием пароля: НЕТ) '

Информация о пользователе в файле конфигурации отличается, и пароль установлен.

Это детали: Моему сайту нравится эта структура:

root ----> 1)config.ini 2)public_html folder
public_html ----> website pages including 1)db_functions.php and 2)admin folder
admin ---->login.php and loginCode.php.

в config.ini

[database]
username = someone
password = something
dbname = something

в файле db_functions.php

<?php
/**
 * Database functions for a MySQL with PHP tutorial
 * 
 * @copyright Eran Galperin
 * @license MIT License
 * @see http://www.binpress.com/tutorial/using-php-with-mysql-the-right-way/17
 */

/**
 * Connect to the database
 * 
 * @return bool false on failure / mysqli MySQLi object instance on success
 */
function db_connect() {


    // Define connection as a static variable, to avoid connecting more than once 
    static $connection;

    // Try and connect to the database, if a connection has not been established yet
    if(!isset($connection)) {
        // Load configuration as an array. Use the actual location of your configuration file
        $config = parse_ini_file('../config.ini'); 
        $connection = mysqli_connect('server',$config['username'],$config['password'],$config['dbname']);
    }

    // If connection was not successful, handle the error
    if($connection === false) {
        // Handle error - notify administrator, log to a file, show an error screen, etc.
        return mysqli_connect_error(); 
    }
    return $connection;
}
?>

в loginCode.php

<?php

require_once('../db_functions.php');
$connection = db_connect();
      //if connection fails, stop script execution
      if (mysqli_connect_errno()) {
            $Message = "Error: " . $sql  .  "Connect failed: ". mysqli_connect_error();
        echo $Message;
      }
      else
          echo 'no error';
?>

Эти трески имеют ошибку: Ошибка: не удалось подключиться: доступ запрещен для пользователя'thing'@'server.com '(используется пароль: НЕТ)

Однако, когда я скопировал ту же функцию из файла db_functions.php в файл loginCode.php и изменил эту строку $config = parse_ini_file('../config.ini'); на $config = parse_ini_file('../../config.ini');, она отлично работает и соединение установилось успешно. Также это работает без ошибок, когда я заменил переменные соединения в db_functions.php фактической информацией о пользователе базы данных, вызвав функцию из loginCode.php.

Я думаю, что на db_functions.php есть проблема, которая не может оценить информацию в конфигурационном файле, но почему другие файлы могут получить к ней доступ?

обновление: я переместил файл loginCode.php в папку public_html, соединение работает. и я переместил файл db_functions.php в папку администратора, он также работал.

1 Ответ

0 голосов
/ 14 мая 2018

сработало, когда я поместил оба файла loginCode.php и db_functions.php в одну и ту же папку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...