Я скомпилировал 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? или попробуйте обмануть это Почта
Надеюсь, это решит вашу проблему.