我在一个项目中使用 Laravel 3,我做了一点cronjob script
,当我搬到新服务器时,它一直说:
警告::未找到
ob_start()
函数“mb_output_handler
”或无效的函数名称和注意::ob_start()
创建缓冲区失败
知道如何解决这个问题吗?
新服务器是 Ubuntu?您的开发服务器和“新服务器”是同一个操作系统吗?相同的 PHP 版本?
两台服务器可能完全不同!
你能展示你的cronjob吗?(它是否尝试通过调用使用特定的 php 二进制文件#!/usr/bin/env php
?
在 CLI中运行的 PHP可能与在 Apache 中运行不同,尤其是如果您将 php5-fpm 与 Nginx 一起使用,则可能会有所不同。
他们每个人都可以有自己的 php.ini 和加载不同的扩展。
正如您所说,您使用的是 Ubuntu Server。如果您使用的是 php 5.5,您可能会注意到以下几点/etc/php5
:
/etc/php5/mods-available # All mods available / installed
/etc/php5/cli/php.ini # php.ini for CLI-called php5
/etc/php5/cli/conf.d # Directory of symlinks to extensions in mods-available!
/etc/php5/apache2/php.ini # php.ini for Apache-run php5
/etc/php5/apache2/conf.d # Symlinks to mods-available extensions
因此,CLI、Apache2 和 PHP-FPM 中的 php 都可以加载不同的扩展并安装分离的 php.ini。
也许基于 cli 的(可能是 cronjob 正在使用的)可能是不同版本的 PHP(!)或加载不同的 .ini 文件和/或扩展集。