Фатальная ошибка PHP: Вызов неопределенной функции mssql connect()
Я никогда раньше не использовал php и пытаюсь подключиться к экземпляру SQL Server 2008 на компьютере с Windows под управлением IIS7 и PHP5.3.
Я скачал и установил SQLSRV30.EXE
из здесь в C:\Program Files (x86)\PHP\ext
добавил это в C:\Program Files (x86)\PHP\php.ini
:
extension=php_sqlsrv_53_nts.dll
Затем перезапустил весь сервер. Я все еще получаю фатальные ошибки в своем файле журнала, в котором говорится:
PHP Fatal error: Call to undefined function mssql_connect()
Что мне нужно сделать, чтобы подключиться к Microsoft SQL Server 2008 с PHP 5.3, работающего на IIS7/Windows Server 2008? Я уверен, что это что-то действительно глупо, что я скучаю...
ПОЛНЫЙ PHPINFO --> http://demo.mandibleweb.com/zapified/hello.php
Phpinfo():
PHP Version 5.3.10
System
Windows NT MWD001 6.1 build 7601 (Windows Server 2008 R2 Standard Edition Service Pack 1) i586
Build Date
Feb 2 2012 20:10:58
Compiler
MSVC9 (Visual C++ 2008)
Architecture
x86
Configure Command
cscript /nologo configure.js "--enable-snapshot-build" "--enable-debug-pack" "--disable-zts" "--disable-isapi" "--disable-nsapi" "--without-mssql" "--without-pdo-mssql" "--without-pi3web" "--with-pdo-oci=C:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8=C:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8-11g=C:\php-sdk\oracle\instantclient11\sdk,shared" "--with-enchant=shared" "--enable-object-out-dir=../obj/" "--enable-com-dotnet" "--with-mcrypt=static" "--disable-static-analyze"
Server API
CGI/FastCGI
Virtual Directory Support
disabled
Configuration File (php.ini) Path
C:\Windows
Loaded Configuration File
C:\Program Files (x86)\PHP\php.ini
3 answers
Я только что попытался установить это расширение на свой сервер разработки.
Во-первых, убедитесь, что расширение правильно включено. Ваш вывод phpinfo()
кажется неполным.
Если он действительно установлен правильно, ваш phpinfo()
должен иметь раздел, который выглядит следующим образом:
Если вы не получите этот раздел в своем phpinfo()
. Убедитесь, что вы используете правильную версию. Существуют как не потокобезопасные, так и потокобезопасные версии расширение.
Наконец, проверьте свои настройки extension_dir
. По умолчанию это так: extension_dir = "ext"
, большую часть времени он работает нормально, но если он не пытается: extension_dir = "C:\PHP\ext"
.
===========================================================================
РЕДАКТИРОВАТЬ предоставленную новую информацию:
Вы используете неправильную функцию. mssql_connect()
является частью расширения Mssql. Вы используете расширение Microsoft, поэтому используйте sqlsrv_connect()
для API для драйвера Microsoft, посмотрите на SQLSRV_Help.chm
, который должен быть извлечен в ваш каталог ext
при извлечении расширения.
php.ini, вероятно, нужно прочитать:
extension=ext\php_sqlsrv_53_nts.dll
Или переместите файл в тот же каталог, что и исполняемый файл php. Вот что я сделал со своей установкой php5 на этой неделе, чтобы заставить odbc_pdo работать. : Р
Кроме того, это не похоже на правильный вывод phpinfo(). Если вы создадите файл с содержимым<? phpinfo(); ?>
и посетите эту страницу, вывод HTML должен отображать несколько разделов, в том числе один с загруженными модулями. (Отредактировано, чтобы добавить: как показано на скриншоте выше, принято ответ)
Я использую IIS и mysql (загружается напрямую, без wamp или xampp) Мой php был установлен в c:\php Я получал сообщение об ошибке "вызов неопределенной функции mysql_connect()" Для меня изменение extension_dir сработало. Вот что я сделал. В php.ini изначально у меня была такая строка
; В Windows: расширение_дир= "ext"
Я изменил его на:
; В Windows: расширение_дир ="C:\php\ext "
И это сработало. Конечно, я делал и другие вещи, такие как раскомментируйте расширения dll и т. Д., Как описано в других замечаниях.