Проблема в установке соединения между php8.3 и MSSQL
Не могу законнектить php с mssql. Выдает ошибку
[php:error] [pid 9168:tid 1184] [client ::1:50414] PHP Fatal error: Uncaught PDOException: could not find driver in C:\\Apache24\\htdocs\\mssql.php:5\nStack trace:\n#0 C:\\Apache24\\htdocs\\mssql.php(5): PDO->__construct()\n#1 {main}\n thrown in C:\\Apache24\\htdocs\\mssql.php on line 5
скрипт подключения
$username = "myName";
$password = "MyPass";
$conn = new PDO("sqlsrv:Server=localhost;Database=MyDB", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo 'PDO SQL Server Connection successful</br>';
Версия SQL 16.0.1130.5 Версия PHP PHP Version 8.3.12
Драйвера лежат в папке ext в php, пробовал версию как thread safe так и not thread safe, конфиг php.ini
; On windows:
extension_dir="ext"
extension=php_sqlsrv_83_nts.dll
extension=php_pdo_sqlsrv_83_nts_x64.dll
ODBC установлен и расширение включено в php.ini
extension=odbc
extension=pdo_odbc
Веб сервер апач, ОС Windows 11
До этого всегда работал с mySql на линуксе, на винде все оказалось сложнее. Прошу в связке базы с php.
Ответы (1 шт):
В общем путем проб и ошибок решил проблему, оказывается Windows не понимает относительные пути и в php.ini в секции ext нужно указать полный путь и путь к драйверам, вот такая конфигурация позволила загрузить драйвера корректно
extension_dir = "c:\Apache24\php\ext\"
extension=php_pdo_sqlsrv_83_ts_x64
extension=php_sqlsrv_83_ts_x64
причем тестировать модули(версия компиляции и т.д.) можно командой из командной строки такой как
C:\Apache24\php>php -d display_startup_errors=1 -d error_reporting=-1 -d display_errors -c "C:\Apache24\php\php.ini" -m
так вы сразу увидите те ли модули(версии) вы пытаетесь загрузить.