我手动安装了Apache和PHP。我从php.ini启用了curl扩展,并且在PHP-CLI中运行良好,但是当我通过Apache访问PHP时,在浏览器中使用curl(以及任何其他)扩展都会给我错误提示“{extension_function}未定义”。
PHP 7.2-64位
Apache 2.4
// php.ini
extension_dir = "/server/php/ext"
...
extension=bz2
extension=curl
extension=fileinfo
;extension=gd2
;extension=gettext
;extension=gmp
;extension=intl
;extension=imap
;extension=interbase
;extension=ldap
;extension=mbstring
;extension=exif ; Must be after mbstring as it depends on it
extension=mysqli
;extension=oci8_12c ; Use with Oracle Database 12c Instant Client
;extension=odbc
extension=openssl
;extension=pdo_firebird
extension=pdo_mysql
;extension=pdo_oci
;extension=pdo_odbc
;extension=pdo_pgsql
;extension=pdo_sqlite
;extension=pgsql
;extension=shmop
// httpd.conf
LoadModule php7_module "/server/php/php7apache2_4.dll"
<IfModule php7_module>
AddHandler application/x-httpd-php .php
AddType application/x-httpd-php .php .html
PHPIniDir "/server/php"
</IfModule>
更新
我正在使用这行代码进行测试:var_dump(function_exists('curl_init'));
当我在php-cli中运行时,它返回true。当我通过浏览器运行php文件时,它返回false。
解决方案
- 我在所有地方都使用了绝对路径(没有使用相对路径)(使用正斜杠)
- 将PHP添加到环境变量中。我不知道为什么,但是没有这个扩展就无法加载。我认为Apache的php7模块需要在环境中安装php。
- 重启电脑(Apache重启不起作用)
希望有人会发现这个有用。
非常感谢您的帮助。
php.ini
文件。您是否在apache\bin\
文件夹中有一个? 如果有,请像编辑 PHP CLI 使用的那个一样编辑它。 - RiggsFollyapache\bin
或任何Apache目录中都没有php.ini
文件。 - Inam Ul Huq