【发布时间】:2018-03-30 21:53:56
【问题描述】:
我可以让 php 通过命令行加载扩展,但不能通过 apache。
php70 安装在 FreeBSD (10.3-RELEASE-p20)
从命令行运行:php -m 显示所有安装在扩展目录中的模块。 php.ini 文件为 /usr/local/etc/php.ini ,扩展名定义在 /usr/local/lib/php/20151012
但是通过 apache(使用 mod_php),我无法运行扩展:
<?php
print_r(php_ini_loaded_file());
echo "<br>";
print_r(get_loaded_extensions());
?>
<?php
显示相同的 .ini 文件 (/usr/local/etc/php.ini) 但只列出了几个模块( [0] => 核心 [1] => 日期 [2] => libxml [3] => pcre [4] => 反射 [5] => SPL [6] => 标准 [7] => mysqlnd [8] => apache2handler)
并且错误日志显示扩展名无法读取:
- PHP 警告:PHP 启动:无法加载动态库 '/usr/local/lib/php/20151012/mysqli.so' - /usr/local/lib/php/20151012/mysqli.so:未定义符号 第 0 行 Unknown 中的“executor_globals”
- PHP 警告:PHP 启动:无法加载动态库 '/usr/local/lib/php/20151012/hash.so' - /usr/local/lib/php/20151012/hash.so:未定义符号 第 0 行未知中的“file_globals”
这适用于位于 2015102 目录中的所有文件
那些文件确实存在并且所有目录的权限都是drwxr-xr-x 所有文件都有 r+x
使用 Apache/2.4.18 (FreeBSD)
任何帮助将不胜感激。
【问题讨论】:
-
检查
php-fmp -m是否包含所有模块 -
它确实显示了所有模块。这是否意味着我应该学习从 mod_php 迁移到 php-fmp ?