Php MAMP和Ubuntu服务器之间的语法差异

Php MAMP和Ubuntu服务器之间的语法差异,php,mamp,lamp,Php,Mamp,Lamp,我有以下功能来计算工作日计算中的星期日。它在我的测试服务器上工作,它是在Mac上运行的MAMP。当我将代码移动到运行LAMP的Ubuntu服务器时,它停止工作(表现为页面没有加载任何内容) 我不知道为什么,并且尝试了单引号和双引号的所有不同组合 功能是:- // function to account for Sundays, and public holidays. Add holiday dates in $holidayDays variable function get_next_bus

我有以下功能来计算工作日计算中的星期日。它在我的测试服务器上工作,它是在Mac上运行的MAMP。当我将代码移动到运行LAMP的Ubuntu服务器时,它停止工作(表现为页面没有加载任何内容)

我不知道为什么,并且尝试了单引号和双引号的所有不同组合

功能是:-

// function to account for Sundays, and public holidays. Add holiday dates in $holidayDays variable
function get_next_business_date($from, $days) {
$workingDays = [1, 2, 3, 4, 5, 6]; # date format = N (1 = Monday, ...)
$holidayDays = ["*-12-25","*-12-26", "*-01-01", "2014-12-24"]; # variable and fixed holidays

$from = new DateTime($from);
while ($days) {
    $from->modify("+1 day");
    if (!in_array($from->format('N'), $workingDays)) continue;
    if (in_array($from->format('Y-m-d'), $holidayDays)) continue;
    if (in_array($from->format('*-m-d'), $holidayDays)) continue;
    $days--;
}
return $from->format("Y-m-d"); #  or just return DateTime object
}

$today = date("Y-m-d", strtotime("today"));
$tomorrow = get_next_business_date("today", 1);
$twodays = get_next_business_date("today", 2);
$yesterday  =   date("Y-m-d", strtotime("yesterday"));

我不明白为什么会这样。

两台机器之间可能会有版本更改

在ubuntu上,您可以检查文件/var/log/apache2/error.log

tail -f /var/log/apache2/error.log
查看抛出了什么错误

要检查机器上的当前PHP版本,可以使用

php -v
从命令行(需要安装php5 cli模块)

另一种方法是将一个PHP文件放入:

<?php
  phpinfo();
?>


在web目录中,并用浏览器打开它。

根据各种评论中的回复,这是服务器版本问题。我的测试箱上的PHP版本比live上的版本更新

如果它有任何用处的话,我在MacMini上使用MAMP作为我的测试环境,它有5.5.3版本,在Ubuntu12.04服务器上使用LAMP,它有5.3版本。我不想升级Ubuntu版本,只想升级PHP版本,我是按照这个方法升级的

需要注意的是(如果您不知道的话),php代码的默认目录将从/var/www更改为/var/www/html。您可以将PHP移动到/var/www/html文件夹,也可以根据上面的链接更改默认文件夹。我怀疑更改默认值可能会对将来的版本产生影响,因为它们希望代码驻留在/var/www/html中

如果要复制到并创建子文件夹,您可能希望了解该文件夹的一些权限问题


希望这对某人有用。

PHP中的“页面未加载任何内容”或“死亡白屏”意味着您需要检查错误日志。始终在开发和测试代码时,使用
错误报告(E_ALL);ini设置(“显示错误”,1)位于脚本顶部。将详细说明错误。您确定这与此函数有关吗?可能是权限问题?请查看/var/log/apache2/error.log数组文本
[]
$workingDays=[…]
所示,需要PHP 5.4或更高版本。我怀疑你的服务器是5.3。您可能需要通过
array()
声明这些。在这个虚拟箱和流浪者的时代,我不明白为什么任何人都需要在不同的环境中开发,对于与预期生产服务器不同的软件版本/扩展,我们将执行此操作并报告。这看起来是实时环境和测试环境之间的版本差异。小本经营的危险:)@jason你成功克服了你的问题吗?这是一个语法差异的问题,我做到了,这确实与版本有关。我没有修改代码,而是根据这个链接更新了服务器上的版本以匹配测试环境,这是我学到的另一个教训,因为我甚至没有考虑过PHP版本。我想你们都有过同样的经历,因此知道答案:)@jason很高兴听到这个消息。如果它对你有帮助,请考虑接受/接受我的回答。