Я плохо знаком с PHP и пытался настроить phpBB на своем локальном сайте. У меня есть стандартная установка для debian apache2 и php5. Установщик phpBB работал нормально, подключился к базе данных и без проблем создал все ее таблицы. Но когда я попытался открыть страницу входа, я получил 0-байтовый ответ.
Небольшое копание показало, что он никогда не делал этого после вызова mysql_pconnect (). Двоичный файл php просто завершается без ошибок или сообщений. Вообще ничего. Я пробовал запустить следующий код:
<?php
$id = @mysql_pconnect('localhost','myusername', 'mypassword', true);
print "id = ".$id."\n";
?>
и строка "id =" никогда не печатается. Он просто ничего не делает. Я не знаю, где посмотреть, какая ошибка произошла или что вообще происходит. Все, что я установил, это "mysql" с использованием груши ... может быть, мне что-то еще не хватает?
Это должно быть где-то проблема пути. Расширение mysql красиво построено на
/usr/lib/php5/20060613+lfs/mysql.so
Отвечать:
jishi: сообщил мне, что оператор "@" подавляет вывод, включая сообщения об ошибках (@echo off, кто-нибудь?)
tomhaigh: расширения должны быть явно включены в файле php.ini. После добавления строки extension = mysql.so в php.ini следующий код работает нормально:
% cat d.php
<?php
ini_set('display_errors', true);
error_reporting(E_ALL | E_NOTICE);
$id = mysql_pconnect('localhost','myusername', 'mypassword', true);
print "id = ".$id."\n";
?>
% php -c /etc/php5/apache2/php.ini d.php
id=Resource id #4
РАДОСТЬ!






У меня иногда PHP падает в «черную дыру», когда находит функцию, которую не может найти.
Можете ли вы убедиться, что расширение mysql установлено правильно?
Вы можете сделать это, создав страницу php следующим образом:
<?php
phpinfo();
?>
Сохраните его в своем корневом веб-каталоге, а затем получите к нему доступ. Он должен содержать всю информацию о том, что ваш сервер в настоящее время работает с точки зрения модулей PHP.
Только что заметил, что вы используете @ перед mysql_pconnect (). Это подавляет все ошибки, что в данном случае является очень плохой идеей. Удалите это, и вы, вероятно, увидите результат.
Иначе:
Проверьте свой php.ini, он должен находиться в /etc/php5/apache2/php.ini для debian.
Проверьте строку с именем display_errors, установите для нее значение true, если вы хотите выводить ошибку в браузере (не рекомендуется для производственной системы, но полезно во время отладки и разработки).
Укажите log_errors on, чтобы apache регистрировал ваши ошибки в файле журнала ошибок apache, который по умолчанию в debian будет (если для phpBB-сайта не указан другой файл ошибок):
/var/log/apache2/error.log
Удалите символ «@», который отключает сообщения об ошибках, которые выдает mysql_pconnect.
Я думаю, что для вашего PHP не установлены расширения mysql. Начиная с PHP5, я думаю, что это расширение PECL. Если вы работаете с Windows, в вашем каталоге php должен быть файл pecl.bat или что-то в этом роде. Просто зайдите туда через консоль и введите
pecl download mysql
Тогда все должно работать как положено.
эта команда просто загружает mysql-1.0.tgz в текущий каталог. Я попробовал "pecl install mysql" и получил пропущенный пакет "pear / mysql", уже установленный как версия 1.0
попробуйте сделать это:
<?php
ini_set('display_errors', true);
error_reporting(E_ALL | E_NOTICE);
$id = mysql_pconnect('localhost','myusername', 'mypassword', true);
print "id = ".$id."\n";
?>
и посмотрите, какой будет ответ
редактировать
Из вашего комментария похоже, что модуль mysql не установлен или не включен. Вы можете заглянуть в свой файл php.ini и посмотреть, есть ли там строка вроде
extension=mysql.so
Если он отмечен точкой с запятой, попробуйте удалить его и перезапустить apache.
Неустранимая ошибка: вызов неопределенной функции mysql_pconnect () в /usr/local/src/phpBB3/d.php в строке 4
Вместо этого вы должны были установить его с помощью apt-get, это избавило бы вас от многих проблем. Он бы включил его в вашей конфигурации, если бы вы не указали иное. apt-get install php5-mysql Одно из преимуществ debian и ubuntu.