Inam Ul Huq
Inam Ul Huq

Reputation: 752

Apache isn't loading PHP extensions

I installed(manually) Apache and PHP. I activated the curl extension from php.ini and It's working fine in PHP-CLI, but when I access PHP through browser with the help of Apache, curl(and any other) extension giving me errors that "{extension_function} is undefined"

PHP 7.2-64bit

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>

Update

I'm testing using this var_dump(function_exists('curl_init')); line of code ... when I run this line from php-cli, It's returning true. When I run this line from a php file using browser, It's returning false.

From PHP-CLI

From browser

PHP File

Error

Solved

  1. I used absolute paths everywhere(no relative path)(used forward slashes)
  2. Added PHP to environment variables. I don't know why, but without this extensions aren't loading. I think php7 module for Apache requires php in environment.
  3. Restarted the computer(Apache restart won't work)

I hope someone will find this helpful.

Thank you for the help.

Upvotes: 4

Views: 6684

Answers (1)

ESP32
ESP32

Reputation: 8709

I had the same problem - on Windows. After changing the path to the extension directory to an absolute path, it worked.

As suggested in the default php.ini (not working):

extension_dir = "ext"

Turned into an absolute path (working)

extension_dir = "c:\amp\php\ext"

The strange thing is that this problem occurs on some machines / versions only. Could not nail it down. There is an official bug listed here:

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

Upvotes: 3

Related Questions