AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 586731
Accepted
ReynierPM
ReynierPM
Asked: 2014-04-05 06:30:04 +0800 CST2014-04-05 06:30:04 +0800 CST 2014-04-05 06:30:04 +0800 CST

在 CentOS 6.5 x64 上进行 PHP 升级后 Apache 无法启动

  • 772

我有一个带有 CentOS 6.5 和 PHP 5.5.11 的开发人员服务器(来自 REMI repos 的最新版本)。今天我做了:

yum --enablerepo=remi,remi-php55 update

这更新了 Apache 和其他一些库,如 Mongo for PHP(我认为是 PECL)。更新后,我重新启动了我的httpd服务,并注意到它无法关闭 Apache。“显然”再次启动它更正了这一点,但现在我发现服务器无法正常工作 - 没有提供网页。

检查 Apache 日志会显示这一行:

PHP 致命错误:PHP 启动:为防止数据损坏,不允许在第 0 行的 Unknown 中打开 32 位平台上的 mongo.native_long 设置

也许我可以通过禁用或卸载该扩展程序来解决此问题,但由于我在某些地方使用该扩展程序,所以这不是一个真正的选择。

除了禁用扩展程序之外,有关如何解决此问题的任何建议?

编辑:为什么如果系统是 i686 而库是 i686 我得到了那个错误

我对 YUM 日志做了一些研究并看到了结果:

tail /var/log/yum.log
Apr 03 01:25:45 Updated: php-recode-5.5.11-1.el6.remi.i686
Apr 03 01:25:45 Updated: php-mbstring-5.5.11-1.el6.remi.i686
Apr 03 01:25:46 Updated: php-intl-5.5.11-1.el6.remi.i686
Apr 03 01:25:47 Updated: php-xml-5.5.11-1.el6.remi.i686
Apr 04 09:09:59 Updated: krb5-libs-1.10.3-15.el6_5.1.i686
Apr 04 09:10:00 Updated: httpd-tools-2.2.15-30.el6.centos.i686
Apr 04 09:10:07 Updated: php-pecl-mongo-1.5.0-1.el6.remi.5.5.i686
Apr 04 09:10:15 Updated: httpd-2.2.15-30.el6.centos.i686
Apr 04 09:10:16 Updated: krb5-workstation-1.10.3-15.el6_5.1.i686
Apr 04 09:10:21 Updated: krb5-devel-1.10.3-15.el6_5.1.i686

为什么如果图书馆是php-pecl-mongo-1.5.0-1.el6.remi.5.5.i686我得到那个错误?怎么了?

编辑2:降级有问题的扩展

由于以前的测试不起作用,我现在尝试按如下方式降级该库:

yum downgrade php-pecl-mongo-1.5.0-1.el6.remi.5.5.i686 --enablerepo=remi,remi-php55
Loaded plugins: fastestmirror, security
Setting up Downgrade Process
Loading mirror speeds from cached hostfile
 * base: centos.secrel.com.br
 * epel: mirror.cedia.org.ec
 * extras: centos.secrel.com.br
 * remi: mirror.1000mbps.com
 * remi-php55: mirror.1000mbps.com
 * updates: mirrors.ucr.ac.cr
Only Upgrade available on package: php-pecl-mongo-1.5.0-1.el6.remi.5.5.i686
Nothing to do

我不能,所以对这个也有帮助吗?

EDIT3:寻找 php.ini 位置

因此,由于 Ubuntu 和 CentOS 具有不同的配置,我坚持认为 Apache 可能正在使用另一个php.ini文件,但它使用了我更改的文件,见下文:

locate php.ini
/etc/php.ini
/etc/php.ini.rpmnew
/usr/share/doc/php-common-5.5.11/php.ini-development
/usr/share/doc/php-common-5.5.11/php.ini-production
/var/www/html/apps/portal_de_logistica/vendor/doctrine/cache/tests/travis/php.ini
/var/www/html/apps/portal_ingenieros/vendor/doctrine/cache/tests/travis/php.ini
/var/www/html/imaginamos/vendor/doctrine/cache/tests/travis/php.ini
/var/www/html/kraken/vendor/doctrine/cache/tests/travis/php.ini

在/etc/php.ini我在文件末尾有这个:

;Mongo
[mongodb]
mongo.native_long = 0
mongo.long_as_object = 1

我还通过执行 a 找到了任何可能导致问题的文件,但没有找到任何文件,ini_set()如下所示:

grep -R "mongo.native_long" /var/www/html/
grep: /var/www/html/apps/portal_de_logistica/web/bundles/acmedemo: No such file or directory

解决方案

因此,经过一些头痛后,我找到了解决方案:

yum remove php-pecl-mongo-1.5.0-1.el6.remi.5.5.i686
yum --enablerepo=remi,remi-php55 install php-devel.i686
pecl install mongo

添加“extension=mongo.so”php.ini之后我的 Apache 再次工作

centos
  • 2 2 个回答
  • 2134 Views

2 个回答

  • Voted
  1. Best Answer
    Giacomo1968
    2014-04-05T06:35:06+08:002014-04-05T06:35:06+08:00

    您的错误内容如下:

    PHP 致命错误:PHP 启动:为防止数据损坏,不允许在第 0 行的 Unknown 中打开 32 位平台上的 mongo.native_long 设置

    这里的关键是mongo.native_long设置。似乎您的操作系统是 32 位的,但此特定设置需要 64 位操作系统。如果这是一个开发服务器,对您来说最好的长期解决方案是将其重建为 64 位操作系统。

    更直接的选择是进入你的php.ini文件并禁用mongo.native_long——不是所有的 MongoDB——通过php.ini像这样放置这个配置参数:

    mongo.native_long = 0
    

    现在重新启动 Apache。事情应该会奏效。这是假设mongo.native_long代码库中的任何内容都不需要的特定功能。有关 MongoDB 配置的更多详细信息,请在此处查看官方文档。有关 的更多详细信息mongo.native_long,此博客条目似乎很有帮助:

    在 64 位平台上,mongo.native_long 设置允许将 64 位整数存储在 MongoDB 中。在这种情况下使用的 MongoDB 数据类型是 BSON LONG,而不是在关闭此设置时使用的 BSON INT。该设置还改变了从 MongoDB 读回 BSON LONG 时的行为方式。如果不启用 mongo.native_long,驱动程序会将每个 BSON LONG 转换为 PHP double,从而导致精度损失。

    • 3
  2. NickW
    2014-04-05T07:52:51+08:002014-04-05T07:52:51+08:00

    您的错误似乎与 mongo php 驱动程序的此更新有关:https ://jira.mongodb.org/browse/PHP-971 (如果您查看 git commit 中的错误,就是这样)。

    如果您已设置mongo.native_long为 0,但仍然出现错误,请查看任何 php 脚本或 php 页面,并查看它们是否ini_set('mongo.native_long', 1);位于顶部(考虑到它在抱怨第 0 行)。

    • 1

相关问题

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 使用 crontab 和 /etc/cron.hourly,daily,weekly 的区别

  • 持续监控许多服务器运行状况的简单方法?

  • Hudson 无法在 tomcat5 中启动

  • CentOS 的依赖挑战

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve