【问题标题】:Code that runs fine on phpFiddle.org crashes on web server在 phpFiddle.org 上运行良好的代码在 Web 服务器上崩溃
【发布时间】:2015-11-30 23:43:36
【问题描述】:

我有一个在 phpFiddle.org 上运行良好的代码,但是当我尝试在我的 Web 服务器上运行它时,由于某种原因它显示了一个内部 Web 错误。我想知道我做错了什么。谢谢。

    $text = "cheese\'s bacon cats ";
    $replacement = ["cheese\'s" => "bacon", "bacon" => "apple", "cats" => "dogs"];
    $search = array_map(function($v){
        return preg_quote($v, "/");
    }, array_keys($replacement));

    echo $text = preg_replace_callback("/\b(" . implode("|", $search) . ")\b/", function($m)use($replacement){
        return $replacement[$m[1]];
    }, $text);

P.S: 我的网络服务器是 ipage.com

这是代码的编辑版本:

$text = "apple\'s bacon cats ";
    $replacement = array("apple\'s" => "bacon", "bacon" => "apple", "cats" => "dogs");
    $search = array_map(function($v){
        return preg_quote($v, "/");
    }, array_keys($replacement));

    echo $text = preg_replace_callback("/\b(" . implode("|", $search) . ")\b/", function($m)use($replacement){
        return $replacement[$m[1]];
    }, $text);

【问题讨论】:

  • 您是否为您的应用程序打开了错误报告? stackoverflow.com/questions/845021/…
  • 你得到什么错误?
  • @Rizier123 内部服务器错误 服务器遇到内部错误或配置错误,无法完成您的请求。请联系服务器管理员,并告知他们错误发生的时间,以及您所做的任何可能导致错误的事情。服务器错误日志中可能会提供有关此错误的更多信息。
  • @frosty 你查看过服务器日志吗?
  • 顺便说一句:我的代码只运行 PHP 版本 >=5.4

标签: php error-handling compiler-errors syntax-error


【解决方案1】:

iPage PHP version is currently 5.3。您使用的数组表示法 [] 仅是 supported as of PHP 5.4。将所有数组代码切换到array(),你应该没问题。在使用 ipage 等托管服务时,检查本地开发环境和服务器版本之间的一致性非常重要。

【讨论】:

  • 喜欢这个? array("apple\'s" => "bacon", "bacon" => "apple", "cats" => "dogs");
  • 它不起作用。我一定还是错过了什么。请看一下我上面代码的编辑版本。
  • 从 5.3 开始支持闭包,所以这不应该是您的问题。 ipage 是否允许您访问错误日志?
  • 看来我是在 php 5.2 运行的。这就是为什么。
  • 啊,你是说 ipage 使用 5.2 而不是 5.3?如果是这种情况,我可以更新我的答案
【解决方案2】:

除了 samrap 的笔记,你应该使用 https://3v4l.org/ 而不是 phpfiddle。 3v4l 的功能更加丰富,它将向您展示您在几个不同 php 版本中的代码结果,而不是假设您正在运行 phpfiddle 使用的任何版本的 pf php。此外,3v4l 还会向您显示性能统计数据等。

【讨论】:

  • 我什至不知道 3v4l。兼容性检查的绝佳资源!
  • 我真的不明白这应该如何回答 OP 的问题?
  • @Rizier123 OP 的问题是关于他的 PHP 代码无法在服务器上运行,这恰好是因为版本差异。这个答案为 OP 提供了一种方法来防止同一问题的其他迭代
  • 是的!一个比 phpFiddle 更好的网站来测试我的代码。
  • @frosty - samraps 的答案是正确的,我的只是补充说明,我觉得也值得将其作为答案发布,但您应该按他的答案打勾。
猜你喜欢
  • 2017-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多