Неустранимая ошибка: Вызов неопределенной функции sqlsrv connect()


Я наткнулся на довольно много сообщений, касающихся одного и того же вопроса, однако я все еще не могу его решить, и поэтому я спрашиваю. Я пытаюсь подключиться к sql в своем php-скрипте. Моя строка подключения:

/* Specify the server and connection string attributes. */
$serverName = "xxx-PC\SQLExpress";
$connectionOptions = array("Database"=>"Salesforce");
$conn = sqlsrv_connect($serverName, $connectionOptions);
if($conn === false)
{
      die(print_r(sqlsrv_errors(), true));
}

Я установил и включил следующее в свой файл php.ini, расположенный в папке wamp: C:\wamp\bin\php\php5.4.16:

extension=c:/wamp/bin/php/php5.4.16/ext/php_sqlsrv_53_ts.dll

Мой wampserver работает нормально, как и службы wampapache и wampsqld. Я в состоянии выполнить php.exe успешно. Однако я не в состоянии сделать подключение к SQL Server 2008 R2, где находится моя база данных. Пожалуйста, помогите!

ПРАВКА 1: Сервер wamp запускает службу wampmysql, пока я пытаюсь подключиться к SQL Server 2008 R2. Может ли это быть причиной? Должен ли я использовать MySQL вместо SQL? Есть какие-нибудь указания?

ПРАВКА 2: Я вообще не вижу раздела sqlsrv при запуске phpinfo(), хотя я добавил extension=php_sqlsrv_54_ts.dll в файл php.ini, расположенный в папке bin сервера wamp.

enter image description here

Author: Sarah, 2014-02-25

5 answers

Это помогло мне получить ответ. В моем случае есть два файла php.ini, расположенных для wamp. Один находится в папке php, а другой - в папке C:\wamp\bin\apache\Apachex.x.x\bin. При подключении к SQL через функцию sqlsrv_connect мы ссылаемся на файл php.ini в папке apache. Добавьте в этот файл следующее (в соответствии с вашей версией):

extension=c:/wamp/bin/php/php5.4.16/ext/php_sqlsrv_53_ts.dll
 10
Author: Sarah, 2017-05-23 11:47:08

При установке сторонних расширений вам необходимо убедиться, что все параметры компиляции совпадают:

  • Версия PHP
  • Архитектура (32/64 бита)
  • Компилятор (VC9, VC10, VC11...)
  • Безопасность потоков

Распространенные сбои включают в себя:

  • Отредактируйте неправильный файл php.ini (это типично для пакетов); правильный путь показан в phpinfo()
  • Забудьте перезапустить Apache
  • Не может видеть ошибки запуска; они должны отображается в журналах Apache, но вы также можете использовать командную строку для его диагностики, например:

    php -d display_startup_errors=1 -d error_reporting=-1 -d display_errors -c "C:\Path\To\php.ini" -m
    

Если все правильно, вы должны увидеть sqlsrv в выводе команды:

[Модули PHP]
bcmath
календарь
Ядро
[...]
СПЛ
sqlsrv
стандартный
[...]

 8
Author: Álvaro González, 2016-01-22 08:34:25

Если вы используете Драйверы Microsoft 3.1, 3.0 и 2.0. Пожалуйста, проверьте, что ваша версия PHP уже установлена с IIS.

Используйте этот скрипт для проверки версии php:

<?php echo phpinfo(); ?>

ИЛИ

Если вы установили PHP Manager в IIS с помощью установщика веб-платформы, вы можете проверить его версию.

Затем:
Если вы используете новую версию PHP (5.6), пожалуйста, скачайте драйверы отсюда

Для версии PHP ниже 5.6 - пожалуйста, скачайте драйверы отсюда

  • Драйвер PHP версии 3.1 требует PHP 5.4.32 или PHP 5.5.16 или более поздней версии.
  • Драйвер PHP версии 3.0 требует PHP 5.3.0 или более поздней версии. Если возможно, используйте PHP 5.3.6 или более поздней версии.
  • Драйвер PHP версии 2.0 драйвер работает с PHP 5.2.4 или более поздней версии, но не с PHP 5.4. Если возможно, используйте PHP 5.2.13 или более поздней версии.

Затем используйте PHP-менеджер, чтобы добавить загруженные драйверы в файл php config.Вы можете сделать это, как показано ниже (просмотрите файлы и нажмите OK). Затем перезапустите сервер IIS

enter image description here

Если этот метод не работает, пожалуйста, измените версию php и попробуйте запустить свой php-скрипт. enter image description here Чтобы изменить php version на более низкий и попытаться понять, что произошло.затем вы можете загрузить соответствующие драйверы, выполнив описанные выше действия.

 1
Author: Elshan, 2015-03-04 12:35:18

Сначала проверьте, правильно ли загружено расширение в phpinfo(); (должно появиться что-то вроде sqlsrv). Если нет, расширение загружено неправильно. Вам также необходимо перезапустить apache после установки расширения.

 0
Author: Dave Child, 2014-02-25 13:11:10

У меня то же самое, потому что в httpd.conf в apache PHPIniDir D:/wamp/bin/php/php5.5.12 это было неверно

 0
Author: ashkufaraz, 2015-01-28 06:32:43