即使使用@operator,PHP脚本仍然终止

即使使用@operator,PHP脚本仍然终止,php,Php,我目前正在运行一个无法运行的脚本,结果显示有以下行: $this->conn_id = @ftp_connect($this->ftp_server); 此行抛出未定义的ftp\u connect函数,但由于前面有@运算符,它不应该终止吗 无论如何,我检查了有错误报告(E_ALL)在脚本的开头。这是原因吗 谢谢 类似于php文档 @-运算符仅对表达式起作用。一个简单的经验法则是: 如果可以获取某物的值,则可以在@operator前面加上前缀 去吧。例如,您可以在变量、函数和 包括调

我目前正在运行一个无法运行的脚本,结果显示有以下行:

$this->conn_id = @ftp_connect($this->ftp_server);
此行抛出未定义的
ftp\u connect
函数,但由于前面有
@
运算符,它不应该终止吗

无论如何,我检查了有
错误报告(E_ALL)在脚本的开头。这是原因吗

谢谢

类似于php文档

@-运算符仅对表达式起作用。一个简单的经验法则是: 如果可以获取某物的值,则可以在@operator前面加上前缀 去吧。例如,您可以在变量、函数和 包括调用、常量等。您不能将其预先设置为 函数或类定义,或条件结构,如if 还有foreach等等

这意味着,如果错误与纯表达式无关..(如致命错误),则我引发的错误

类似于php文档

@-运算符仅对表达式起作用。一个简单的经验法则是: 如果可以获取某物的值,则可以在@operator前面加上前缀 去吧。例如,您可以在变量、函数和 包括调用、常量等。您不能将其预先设置为 函数或类定义,或条件结构,如if 还有foreach等等


这意味着,如果错误与纯表达式无关..(如致命错误),则我引发的错误

然而,正如前面的答案所规定的那样,当函数不存在时,@doesn无法抑制错误

if (function_exists('ftp_connect')){
        $this->conn_id = ftp_connect($this->ftp_server);
 }

但是,当函数不存在时,@doesn不起作用以抑制错误,正如前面的答案所指定的那样,将执行此技巧

if (function_exists('ftp_connect')){
        $this->conn_id = ftp_connect($this->ftp_server);
 }

将执行此操作

抑制器运算符仅阻止记录错误。如果是致命错误,脚本仍将停止执行。你可以用
函数_exists()
来包装它,并且只在定义了它的情况下使用它。
@
不能防止错误,它只会抑制错误,这样它们就不会显示。
@
不能防止致命错误,就像用毛巾裹住你的头不能防止你被棒球棒击中头部一样。它所做的只是阻止你看到东西。@unixmiah不幸的是,文档很少,没有提到任何需要ftp模块的内容。此外,脚本作者抑制了错误,这使我对错误的原因感到困惑,我最终使用此答案中的
寄存器\u关闭\u函数
发现了错误。抑制器运算符仅阻止记录错误。如果是致命错误,脚本仍将停止执行。你可以用
函数_exists()
来包装它,并且只在定义了它的情况下使用它。
@
不能防止错误,它只会抑制错误,这样它们就不会显示。
@
不能防止致命错误,就像用毛巾裹住你的头不能防止你被棒球棒击中头部一样。它所做的只是阻止你看到东西。@unixmiah不幸的是,文档很少,没有提到任何需要ftp模块的内容。此外,脚本作者抑制了错误,这让我对错误的原因感到困惑,我最终通过使用
register\u shutdown\u function
从这个答案中找到了错误。