PHP5: вызов внешних функций и регистрация ошибок

Я плохо знаком с 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

РАДОСТЬ!

Вместо этого вы должны были установить его с помощью apt-get, это избавило бы вас от многих проблем. Он бы включил его в вашей конфигурации, если бы вы не указали иное. apt-get install php5-mysql Одно из преимуществ debian и ubuntu.

jishi 11.11.2008 01:22
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
1
914
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

У меня иногда 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

David Dombrowsky 10.11.2008 22:03
Ответ принят как подходящий

попробуйте сделать это:

<?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

David Dombrowsky 10.11.2008 22:00

Другие вопросы по теме