Intereting Posts
Минимизация окончательного вывода HTML с использованием регулярных выражений с помощью CodeIgniter Обнаружение, если изображение встроено Что быстрее: in_array () или куча выражений в PHP? Общее количество часов не может быть вставлено в MySQL из Android preg_match получить mp3 и mp4 имена файлов в порядке расширения файлов, а затем в порядке имен файлов с внешней веб-страницы? Другие ошибки в Facebook Вход в систему Javascript Ошибки Транзакционный PDO с MVC на нескольких моделях Почему на PHP PHP преобразует результат (int) ((0.1 + 0.7) * 10) в 7, а не 8? Отключить статистику / аналитический Javascript Как сделать приращение переменной путем добавления переменной счетчика в конец внутри цикла while Как расширить переменные в строке Общие сведения о обратных вызовах сортировки или сравнения функций массива с использованием пользовательских функций Отображение изображений из папки с помощью PHP синхронизировать базу данных Microsoft Access с базой данных сайта Silverstripe Маршрутные столкновения в Ларавеле 4

Доступ запрещен для пользователя «www-data» @ localhost – как с этим бороться?

Вчера я столкнулся со странной проблемой. У меня есть сервер с Debian с установленными PHP 4.4.4-8 и mysql 5.5.9. Этот сервер обслуживает несколько веб-сайтов. По какой-то причине случайно я получаю эту ошибку «Доступ запрещен для пользователя« www-data »@« localhost »(с использованием пароля: НЕТ)», когда я пытаюсь загрузить веб-страницу. Если я нажимаю обновление, страница загружается нормально, но есть несколько кликов, это сообщение появляется снова. Имя пользователя, которое эта страница использует для подключения к серверу mysql, не является www-данными.

Кто-нибудь сталкивался с подобной проблемой?

www-data – это пользователь Debian, который запускает apache и php. Если вы попытаетесь выполнить запрос, если у вас нет правильного подключения, php / mysql попытается создать соединение с помощью <unix-user>@localhost без пароля. Здесь вызывается www-data@localhost (using password:NO) .

Наиболее вероятная причина, по которой это началось сейчас (хотя она работает нормально в течение двух лет) заключается в том, что ваша загрузка db увеличилась до такой степени, что некоторые соединения не могут быть успешными (вероятно, из-за max_connections или max_user_connections, хотя это также может быть результатом других ограничений, таких как память, потоки и т. д.). Когда это произойдет, ваш вызов mysql_connect выдает сообщение об ошибке и возвращает FALSE . Если вы не обнаружите эту ошибку, ваш следующий вызов mysql (возможно, mysql_query или mysql_select_db) попытается подключиться к www-data @ localhost – таким образом, вы столкнетесь с проблемой, которую видите.

Я предлагаю включить отчет об ошибках и отображение ошибок (как было предложено @DarkMantis):

 ini_set('error_reporting', E_ALL|E_STRICT); ini_set('display_errors', 1); 

Кроме того, убедитесь, что вашему вызову mysql_connect не предшествует знак @ ; и не забудьте проверить возвращаемое значение. Он должен выглядеть примерно так:

 $cxn = mysql_connect('localhost','yourusername','yourpassword'); if( $cxn === FALSE ) { die('mysql connection error: '.mysql_error()); } 

Похоже, что запрос, вызывающий ошибку, возникает, когда вызывается что-то конкретное. Это может означать, что при вызове запроса вы не подключены к базе данных с правильным именем пользователя / паролем.

Постарайтесь убедиться, что вы определенно связаны, используете or die(mysql_error()); в конце всех ваших переменных запроса для их отладки.

Кроме того, используйте следующие две строки вверху вашего php-файла:

 ini_set('error_reporting', E_ALL); ini_set('display_errors', 1); 

Это покажет вам любые небольшие ошибки php, которые могут возникнуть в вашем классе / файле, которые вы, возможно, раньше не встречали.

Если у вас все еще есть проблемы после этого, отправьте свой PHP-код, и я посмотрю на него напрямую.

Благодаря!

я столкнулся с той же проблемой. Проблема была в моем config.php! Я просто изменил $ dbserver с «127.0.0.1» -> «localhost». Теперь соединение снова работает!

Использовать пароль «НЕТ»

 (MySQLi Object-Oriented) <?php $servername = "localhost"; $username = "username"; $password = "password"; // Create connection $conn = new mysqli($servername, $username, $password); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } echo "Connected successfully"; ?> 

Деактивация безопасного режима исправила его для меня:

 Notice: mysql_connect(): SQL safe mode in effect - ignoring host/user/password information in /var/www/html/test.php on line 4 

Для решения этой проблемы. Мне пришлось изменить сценарий подключения.

 (MySQLi Object-Oriented) <?php $servername = "localhost"; $username = "username"; $password = "password"; // Create connection $conn = new mysqli($servername, $username, $password); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } echo "Connected successfully"; ?>