即使使用 @ 运算符,PHP 脚本仍然终止


PHP script still terminated even with @ operator

>我当前正在运行一个无法正常工作的脚本,原来有这样一行:

$this->conn_id = @ftp_connect($this->ftp_server);

这一行抛出ftp_connect未定义的函数,但由于它前面有运算符@,它不应该终止吗?

无论如何,我检查了脚本开头是否有error_reporting(E_ALL);。这是原因吗?

谢谢!

就像在php文档中一样 http://php.net/manual/en/function.error-reporting.php

@ 运算符仅适用于表达式。一个简单的经验法则是: 如果可以获取某物的值,则可以在前面加上@运算符 到它。例如,您可以将其附加到变量、函数和 包括调用、常量等。不能将其附加到 函数或类定义,或条件结构,例如 if 等等。

这意味着如果错误与纯表达式无关..(像致命错误)我提出的错误..

正如前面的答案所指定的那样,@ 在函数不退出时无法抑制错误,但是

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

会做这个伎俩