У меня есть несколько серверов, на которых работает PHP 5.2.6 (без потоковой сборки) в Windows 2003 / IIS6 с использованием FastCGI.
У меня возникли проблемы с подключением к MS SQL 2000/2005 (взаимодействие с MySQL работает нормально, сценарии ASP / ASP.NET также могут успешно подключаться к MS SQL). Одно из решений предполагает копирование файла ntwdblib.dll
SQL Client Tools в папку расширения PHP или установку всех инструментов SQL Client на веб-сервере (что я не хочу делать).
Еще одно решение – использовать драйвер Microsoft SQL Server 2005 для PHP . Это отлично подходит для написания приложений, но для приложений, таких как phpBBS или WordPress, это не работает.
Например, следующий скрипт:
<?php $host = "mssqlhost"; $user = "phpbb2"; $password = "phpbb2"; $connect_sql_server = mssql_connect($host, $user, $password); ?>
Сбой:
PHP Предупреждение: mssql_connect () [function.mssql-connect]: Не удается подключиться к серверу: mssqlhost в E: \ AppsDev.NET_UK_Minds \ phpSqlNC \ www \ test.php в строке 6
Цель состоит в том, чтобы позволить скриптам PHP подключаться к SQL 2000 и SQL 2005, которые работают на разных серверах. Я также должен добавить, что обновление до более поздней версии PHP в данный момент не является вариантом.
Каков правильный способ настройки PHP на Windows 2003 / IIS6 для подключения к SQL 2000/2005?
После тестирования различных «решений» выясняется, что проблема была решена просто путем замены файла ntwdblib.dll
в папке исполняемых файлов PHP.
Нет необходимости устанавливать какие-либо из: собственного клиента SQL , SQL Client Tools или Microsoft SQL Server 2005 для PHP , так как многие тупики предложили.
Все, что нужно сделать, это обеспечить, чтобы ntwdblib.dll
версия 2000.80.2039.0 была сброшена в папку c:\php
(или где бы вы ни установили / не сжали PHP), а затем перезагрузите IIS. Документы PHP предлагают копировать ntwdblib.dll
в% SYSTEMROOT% \ System32, который не работает, и они также предполагают, что это будет поддерживать только именованные каналы, что также неверно.
Я не пытался проверить, работает ли более поздняя версия ntwdblib.dll
, но 2000.80.2039.0 работает для меня.
Не совсем ответ, но более полезная информация …
Версия ntwdblib.dll (2000.2.8.0), которая поставляется с последним php 5.2.X, отлично работает с Apache и MSSQL (2008). У меня есть копия DLL из версий 2000.80.XX, и она новее, чем то, что поставляется с PHP. Я не знаю, улучшилось ли это.
Функции «mssql_» не включены в официальный драйвер mspfp mssql . Они изменили их на другое соглашение об именах. («sqlsrv_») Эта ссылка, которую вы опубликовали, является версией 1.0, но они уже находятся в версии 1.1. Для функций «mssql_» требуется наличие ntwdblib.dll.
остановить службу Apache 2.2
Загрузить PHP 5.2.12 Windows Zip пакет для Windows 2008 32 бит; (Версия VC6 Thread Safe, необходимая для PHP, используемого в качестве модуля Apache).
windows DOT php DOT net / download / -> php-5.2.12-Win32-VC6-x86.zip – Извлечь архив в C: \ PHP – Проверить установку: C: \ PHP> php -v
– установить переменную среды PHPRC = C: \ PHP – переименовать 'C: \ PHP \ php.ini-recommended' в 'C: \ PHP \ php.ini' – изменить C: \ PHP \ php, ini-файл:
modify: extension_dir = "C:\PHP\ext" uncomment: extension=php_mssql.dll
Добавьте строки ниже в «C: \ Program Files \ Apache Software Foundation \ Apache2.2 \ conf \ httpd.conf"
PHPIniDir "C:/PHP/" LoadModule php5_module "C:/PHP/php5apache2_2.dll" AddHandler application/x-httpd-php .php
Добавьте строки ниже в «C: \ Program Files \ Apache Software Foundation \ Apache2.2 \ conf \ mime.types"
application/x-httpd-php php application/x-httpd-php-source phps
Убедитесь, что файл phpinfo.php с содержимым: находится в папке C: \ Program Files \ Apache Software Foundation \ Apache2.2 \ htdocs
Запустить службу Apache 2.2
Все работает как шарм … никаких дополнительных шагов не требуется.