Apache没有加载PHP扩展。

4

我手动安装了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-CLI

来自浏览器

PHP文件

错误

解决方案

  1. 我在所有地方都使用了绝对路径(没有使用相对路径)(使用正斜杠)
  2. 将PHP添加到环境变量中。我不知道为什么,但是没有这个扩展就无法加载。我认为Apache的php7模块需要在环境中安装php。
  3. 重启电脑(Apache重启不起作用)

希望有人会发现这个有用。

非常感谢您的帮助。


当通过Apache(浏览器)使用PHP时,它能正常工作吗? - RiggsFolly
2
通常在 Apache 中使用的 PHP 使用不同的 php.ini 文件。您是否在 apache\bin\ 文件夹中有一个? 如果有,请像编辑 PHP CLI 使用的那个一样编辑它。 - RiggsFolly
是的,在浏览器中PHP工作正常。我从一个PHP文件中运行了phpinfo();函数,它也很正常工作。 - Inam Ul Huq
1
因此,请查看phpinfo输出中称为“Loaded Configuration File”的参数。这将告诉您PHP在Apache下从哪里获取其“php.ini”文件。 - RiggsFolly
apache\bin或任何Apache目录中都没有php.ini文件。 - Inam Ul Huq
显示剩余13条评论
1个回答

3

我遇到了相同的问题 - 在Windows上。将扩展目录的路径更改为绝对路径后,它就可以工作了。

如默认php.ini所建议(不起作用):

extension_dir = "ext"

转换为绝对路径(正在工作)
extension_dir = "c:\amp\php\ext"

奇怪的是,这个问题只在某些机器/版本上出现。无法确定原因。这里有一个官方的错误列表:

https://bugs.php.net/bug.php?id=74866


谢谢 - 将 extension_dir 更改为绝对路径完全解决了神秘的加载失败问题! - DarthGizka
在我的情况下,问题是我只在用户环境变量中设置了Apache和PHP,而没有在系统环境变量中设置。将它们添加到系统环境变量中解决了这个问题。 - c-shubh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接