0

所以我有一个小问题,正如我在这里概述的那样。

我提出了一个新问题,因为这更笼统,也许会对其他人有所帮助。

所以本质上,我将 Facebook SDK 作为一个库集成到 Codeigniter 中。

SDK 需要 Json 和 Curl。

在 base_facebook.php 文件中有以下代码:

    if (!function_exists('curl_init')) {
  throw new Exception('Facebook needs the CURL PHP extension.');
}
if (!function_exists('json_decode')) {
  throw new Exception('Facebook needs the JSON PHP extension.');
}

如果这些功能不可用,我希望会触发一个错误来告诉我。然后我可以安装正确的软件包并继续。

实际发生的情况是,即使我将错误报告设置为 E_ALL,也会返回一个空白页。

这使得调试变得不可能,经过大量播放后我发现这是因为我的服务器上没有安装 CURL。

我的问题是为什么 codeigniter 显示空白页而不是基于库的异常?此外,即使库中存在异常,为什么页面的其余部分不会继续执行。从本质上讲,CI 似乎使异常的使用毫无价值。

有人可以建议吗?

谢谢

4

1 回答 1

0

我的问题是为什么 codeigniter 显示空白页而不是基于库的异常?

很可能是因为display_errors设置为“关闭”。

虽然这被推荐用于生产环境(网站用户不应该看到内部错误消息——它可能会给他们提供他们不应该拥有的内部信息)——它在开发时不是很有帮助,你作为开发人员想知道出了什么问题。

因此,请检查 CI 是否为此设置了“调试”设置,或者它是否已在您的 PHP 配置中设置为关闭。

(也许 CI 或您的配置设置为将错误记录到文件中。也建议用于生产;在开发时,您必须留意这个文件。)

此外,即使库中存在异常,为什么页面的其余部分不会继续执行。

因为这就是异常应该如何工作的——如果它们在到达应用程序的“顶层”时没有被捕获,它们会导致致命错误,并且脚本在这些发生时会死掉。

熟悉try { … } catch(…) { … }处理脚本流中可能发生的异常的概念。

(实际上,如果您正在使用高级 PHP 框架,您还不知道这一切,这有点令人惊讶……)

于 2012-09-29T15:58:38.660 回答