我在将变量传递给PHP函数时遇到问题。我正在使用PHP 7.0.33运行Raspberry Pi Web服务器。在树莓上一切正常。当我将页面上传到运行PHP 7.2的Godaddy服务器时,我得到了可怕的死亡白页。我将其追溯到以下内容。简化了。
在树莓上:
这就是我发送变量的方式。
updateCustomer($uniqueid, $name, $title);
这就是我在函数中接收它们的方式。
function updateCustomer($uniqueid, $name, $title, $job){
}
在树莓派上,我发送了3个变量($uniqueid
,$name
,$title
)。该函数正在寻找4个变量($uniqueid
,$name
,$title
,$job
),但如果不存在最后一个变量($job
除非我发送4个变量并接收4个变量,否则这在Godaddy服务器上将不起作用。因此,为了进行测试,我只是像这样插入$x
并起作用。
function updateCustomer($uniqueid, $name, $title, $x){
}
所以我的问题...这是PHP 7.033与Godaddy上运行的7.2之间的功能区别吗?还是PHP设置中有一项设置可以使它正常工作?
答案 0 :(得分:8)
两者之间的差异可能与两台机器上的PHP错误报告/日志记录配置有关。
编辑:看起来php 7.1升级了警告错误的参数太少。 here
对于第四个参数,可以将其默认值设置为null,以便仅需要3个参数。
app
答案 1 :(得分:2)
是的,PHP 7.0和PHP 7.1之间有所不同。
以前(PHP <= 7.0),如果调用的用户定义函数参数太少,将发出警告。现在(PHP> = 7.1),此警告已升级为Error异常。此更改仅适用于用户定义的功能,不适用于内部功能。
您所看到的实际上是什么-它已从警告(因此有效,没有错误-只是一条消息)更改为实际错误。
解决方案是简单地修复,方法是在参数中添加默认值,从而使其成为可选参数。
function updateCustomer($uniqueid, $name, $title, $job = null) {
// ..
}