Я только что обновил PHP с версии 7.4 до версии 8.3 в своей тестовой среде, которая использует Apache в качестве веб-сервера.
Я раскомментировал строку extension=openssl
и могу проверить, работает ли она, когда запускаю phpinfo();
за пределами веб-сервера Apache.
Но когда я делаю phpinfo();
через Apache, я вижу, что расширение openssl не включено, хотя файл php.ini тот же.
Почему Apache успешно загружает мое расширение openssl и как это исправить?
Хорошо, я только что понял это.
Внутри моего php.ini конфигурация расширения по умолчанию выглядит так extension=openssl
, а внутри папки ext/ имя расширения такое php_openssl.dll
Если я дам полное имя файла вот так extension=php_openssl.dll
, теперь это работает.
Ранее у меня была точно такая же проблема с расширением sqlsrv
.
Хотя я не понимаю такого поведения.
Это должно работать, начиная с PHP 7.2.0, вместо имени файла расширения можно использовать имя расширения.
Когда вы проверяете
phpinfo()
через Apache, обратите внимание на то, какой файл php.ini он использует. Если это не то же самое, что вы изменили, измените и это и перезапустите веб-сервер. У вас могут быть разные настройки PHP для CLI (командная строка) и mod_php (Apache). Когда вы делаетеphpinfo()
вне веб-сервера, настройки веб-сервера не будут использоваться.