Я пытаюсь создать страницу, которая может отправлять данные из формы в базу данных MSSQL через PHP. Я успешно установил PHP (phpinfo()
отлично работает даже на удаленном компьютере), но не загружает расширение sqlsrv. Я знаю что редактирую право php.ini
файл, потому что у меня добавлено другое расширение (wincache), и он загружается нормально, что подтверждается обоими phpinfo()
и get_loaded_extensions()
.
Журналы мне ничего не говорят. Менеджер PHP в IIS сообщает мне, что файлы расширения sqlsrv включены. Я перезапустил веб-сайт, сервер и компьютер, но ничего не работает.
Я использую PHP 7.1.1 на машине с Windows 7 Ultimate. Он работает в режиме x64, без защиты потоков. Я убедился, что файлы расширений, которые я включил, являются файлами x64, не ориентированными на многопоточность. Я не знаю, что еще проверить или какую дополнительную информацию мне нужно предоставить.
РЕДАКТИРОВАТЬ: Я побежал php-cgi.exe
так как эта страница предложил, и он получил сообщение об ошибке:
[31-Mar-2017 22:38:12 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'C:\Program Files\iis express\PHP\v7.1\ext\php_sqlsrv_7_nts_x64.dll' - The specified procedure could not be found.
in Unknown on line 0
[31-Mar-2017 22:38:17 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'C:\Program Files\iis express\PHP\v7.1\ext\php_pdo_sqlsrv_7_nts_x64.dll' - The specified procedure could not be found.
in Unknown on line 0
Означает ли это, что проблема в самих библиотеках расширений? Как я могу это исправить?
Я уверен, что вы уже поняли это, но если у кого-то еще возникают подобные ошибки, убедитесь, что вы используете правильную версию DLL, т.е. php_sqlsrv_VERSION_THREADSAFETY_ARCHITECTURE.dll
. Так положите php_sqlsrv_71_nts_x86.dll
или тот, который совместим с вашей машиной и настройкой.
Похоже, что расширение slqsrv еще не поддерживает PHP 7.1
На момент написания (июль 2017 г.) похоже, что предварительная версия доступен для загрузки, поэтому я думаю, что производственная версия не может быть далеко