2015-07-17 4 views
0

У меня Ubuntu 14.04 LTS. Я установил apache, phpmyadmin и mysql. Я могу получить доступ к базам данных через localhost/phpmyadmin с использованием моего пароля и имени пользователя root. Я поместил ссылку внутри/etc/apache2/sites-enabled, которая ссылается на исходный .conf-файл веб-сайта, находящегося в/etc/apache2/sites-available. И у него есть эти строки (mypage.confДоступ запрещен для пользователя '' @ 'localhost' (с использованием пароля: НЕТ)

php_value mysql.default.user root 
php_value mysql.default.password mypass 
php_value mysql.default.host localhost 

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

mysql_connect('localhost', 'root', 'mypass') or die(mysql_error()); 

Но когда я пытаюсь подключитесь к базе данных, используя это ниже:

mysql_connect(ini_get("mysql.default.host"), ini_get("mysql.default.user"), ini_get("mysql.default.password")) or die(mysql_error()); 

В ответ на это сообщение об ошибке на странице и делает не выполнять остальную часть кода:

Access denied for user ''@'localhost' (using password: NO) 

Как я могу понять из этого, что он получает от значения по умолчанию «». Поэтому я должен делать что-то неправильно в файле .conf. Можете ли вы мне помочь?

+1

Пожалуйста, прочитайте [этот ответ] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php?answertab=votes#tab-top), так как вы должны действительно избегайте использования ** mysql _ ** или ** mysqli _ **. Вместо этого обратитесь к [PDO] (http://php.net/manual/en/book.pdo.php) – Vanitas

+0

@Vanitas Я отредактирую свой код соответствующим образом. Спасибо за информацию. – kittenparry

+0

Я предполагаю, что лучше поддерживать конфигурацию соединения MySQL в скриптах PHP (или в каком-то файле конфигурации) - это зависит от того, насколько сильно зависит веб-сервер, вам нужно правильно настроить Apache, когда вы перейдете на другой сервер, вам нужно будет перенастроить его и т. Д. –

ответ

0

Как заявил @Vanitas, я изменил стиль соединения на PDO вместо mysql. Вот мой

connection.php

<?php 
    DEFINE('DB_HOST', 'localhost'); 
    DEFINE('DB_NAME', 'mydb'); 
    DEFINE('DB_USER', 'usr'); 
    DEFINE('DB_PASS', 'pss'); 

    try{ 
     $db = new PDO('mysql:host='.DB_HOST.'; dbname='.DB_NAME, DB_USER, DB_PASS); 
    }catch(PDOException $exeption){ 
     echo $exeption->getMessage(). '<br/>'; 
     die(); 
    } 
?> 

И я retrive его с помощью

require_once('../../0n/connection.php'); 

Это за пределами веб-каталога. Таким образом, это безопасно. Я полагаю. И он работает красиво.

Смежные вопросы