Назад | Перейти на главную страницу

php-cgi показывает модули mysql, но выдает ошибку «Вызов неопределенной функции mysql_connect ()»

Я скомпилировал PHP 5.3.6 из исходного кода в Mac OS X 10.6, используя параметр --with-mysqli = mysqlnd. Вывод как php -m, так и php-cgi -m показывает модули mysqli и mysqlnd. Когда я запускаю простой тестовый файл PHP, содержащий mysql_connect (...), используя обычный двоичный файл php, он подключается нормально. Когда я использую тот же тестовый файл PHP с php-cgi, я получаю:

Неустранимая ошибка PHP: вызов неопределенной функции mysql_connect () в /Users/chris/test2.php в строке 2

Я подтвердил, что информация о сокете MySQL в php.ini верна, и убедился, что php-cgi использует этот файл, используя аргумент -c. MySQL отлично работает с использованием обычного интерфейса командной строки mysql и, очевидно, работает с обычным PHP. phpinfo () из php-cgi показывает правильные версии библиотек mysqli и mysqlnd.

Мне нужно запустить PHP в конфигурации CGI в этой конкретной среде, поэтому мне действительно нужен php-cgi для работы. На данный момент меня не беспокоит Apache2 / nginx / etc - просто заставить работать CGI. Любой совет о том, что мне не хватает?

Вы скомпилировали PHP с поддержкой mysqli extension (mysqli_ * functions) ... но ошибка ясно показывает, что вы используете mysql_connect() функция (без "i", которая принадлежит mysql расширение). Это 2 разных расширения: mysqli расшифровывается как "MySQL Improved" и предпочтительнее использовать более старые и менее многофункциональные mysql.

У вас есть 2 варианта:

1) Обновите свой код, чтобы использовать mysqli_* функции

2) Снова скомпилируйте свой PHP с помощью mysql поддержка расширений (не забудьте включить ее позже в php.ini)

P.S. В любом случае я бы рекомендовал использовать PDO для нужд вашей базы данных (если вы, конечно, можете).

возможно, вы можете попробовать это:

В файле php.ini было раскомментированное расширение mysql.so? или попробуйте обмануть это Почта

Надеюсь, это решит вашу проблему.