【问题标题】:How to get php7 to load extensions via apache如何让php7通过apache加载扩展
【发布时间】: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 ?

标签: php apache mysqli freebsd


【解决方案1】:

你可能已经更新到 PHP70 和相关的扩展而不更新 mod_php,它不包含在 PHP70 端口/包中。

无论如何,我的第一个建议是重新编译 PHP70* 和 mod_php,然后重新启动 Apache。

【讨论】:

  • 感谢您的建议。为了完整起见,我已经安装了 php70、php70_extensions、ports/www/mod_php70(在安装 php70 之后);仍然没有运气,仍然卡住(w / apache重新启动)。我搬到了 php-fmp (它工作)。仍然很高兴知道是否存在解决方案。
猜你喜欢
  • 1970-01-01
  • 2015-01-20
  • 2018-07-30
  • 2016-11-10
  • 1970-01-01
  • 1970-01-01
  • 2015-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多