Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们可以在变量名php中使用@symbol吗_Php - Fatal编程技术网

我们可以在变量名php中使用@symbol吗

我们可以在变量名php中使用@symbol吗,php,Php,我有一个来自其他开发者的旧代码设置,我正在我的服务器上设置相同的代码,在那里我看到一行 <?php @$Days = $_POST['Days']; ?> 这段代码在我的本地安装程序上运行良好,但一旦我将其上传到服务器上,它就不起作用了,并返回了一个网络错误,并且在这段代码之后的所有代码/HTML也不起作用 尽管如此,我调试了这个问题并删除了它。另外,我知道为了处理错误,我们使用@符号,我也读过 我的问题是,在上述情况下,什么是错误,为什么没有显示,如果我想检查错误,那么我该怎

我有一个来自其他开发者的旧代码设置,我正在我的服务器上设置相同的代码,在那里我看到一行

<?php @$Days = $_POST['Days']; ?>

这段代码在我的本地安装程序上运行良好,但一旦我将其上传到服务器上,它就不起作用了,并返回了一个网络错误,并且在这段代码之后的所有代码/HTML也不起作用

尽管如此,我调试了这个问题并删除了它。另外,我知道为了处理错误,我们使用@符号,我也读过

我的问题是,在上述情况下,什么是错误,为什么没有显示,如果我想检查错误,那么我该怎么做

对于错误报告,我将告诉您,我已经使用了以下代码

<?php
ini_set("display_errors", "1");
error_reporting(E_ALL);
?>


所以请告诉我为什么我的代码不能通过这个语句,因为我有大约100个这样的代码块。php中是否有任何设置可以帮助我克服这个问题。

php中的@是错误抑制运算符,请查看

在您的示例中在变量名之前使用它,以避免出现E_note错误。如果在$\u POST数组中未设置“Days”键,它将抛出一条E\u通知消息,但在那里使用@来避免该E\u通知

代码在服务器上不工作的原因可能是由于配置被禁用

禁用尖叫应该可以解决问题

更改php.ini中的指令,如下所示:

scream.enabled = 0
如果要在运行时禁用它,则可以使用手册中所述的ini_集:

ini_set('scream.enabled', false);
编辑

评论中有人指出我的回答不够彻底。我将尝试在这里修改我的错误编辑:)

尖叫(并禁用@)可以/将破坏代码的原因是变量没有值。如果代码的其余部分尝试使用该变量,它将抛出一个错误

此外,如果您将错误处理程序附加到E_通知,则E_通知可能会引发错误。 引自:

上述代码将在任何时候发出E_通知或 发出E_警告,有效终止脚本输出(如果 未捕获异常)。对PHP错误抛出异常是最好的选择 与并行异常处理策略相结合 (设置异常处理程序)在生产中正常终止 环境


你确定你读过那个问题吗
@
抑制/忽略错误,您不会通过忽略错误来处理错误。这就像说你通过忽略你收到的还款通知来处理你的信用卡债务是的,我知道@suprres通过某些函数来处理错误,我不清楚它在我的例子中,在变量名前面做了什么。“为了处理错误,我们使用了@symbol”——这是完全错误的。通过将
@
放在语句前面,您不会处理错误。你。这是一个很大的区别。如果您没有看到错误,您如何确定该行是导致致命错误的原因?如果$\u POST数组中没有此类值,@正在抑制的唯一消息是一条通知(低优先级警告)。不管是否沉默,这都不应该停止脚本,所以问题可能在其他地方。通知不会停止执行,我们没有尖叫,所以我不确定这是否真的会有帮助。没错,它不会总是导致错误,但如果没有实际的错误消息,这是我所能做的最好的:)让我添加一些信息来改进答案,谢谢。感谢@RickvanLieshout提供的信息,我对此进行了进一步调试,实际上变量声明并没有导致错误。它被使用,因为这真的导致了问题。是的,这是我所期望的。15分钟前,由于IMSoP的解释,我做了一次编辑。很高兴我们能帮助你。记住接受答案,+IMSop先生,享受你的编码吧!我仍然不明白scream与任何东西有什么关系(顺便说一句,这是一个我以前从未听说过的扩展,并且不是PHP默认构建的一部分)。如果你让一个通知保持沉默,同样的事情就会发生,就像你忽略了它一样。我发现PHP的通知在大多数时候都“太吵了”,所以我倾向于关闭它们。