已弃用在用户输出处理程序中尝试生成输出(例如使用 echo)。该弃用警告会绕过当前处理程序直接输出,以确保警告可见;若存在嵌套的输出处理程序,则会继续使用下一个处理程序。
已弃用非标准的类型转换名称 (boolean)、(integer)、(double)
和 (binary),应分别改用 (bool)、(int)、(float)
和 (string)。
已弃用在 case 语句末尾使用分号而非冒号作为终止符的做法。
已弃用将反引号运算符作为 shell_exec() 的别名。
已弃用从 __debugInfo() 返回 null,应改用返回空数组。
已弃用 report_memleaks INI 指令。
已弃用常量的重复声明。需要注意的是,此操作此前已会触发警告,今后仍将继续如此。
以下闭包绑定问题此前已触发 E_WARNING,现已标记为废弃:
已软废弃 __sleep() 和 __wakeup() 魔术方法,建议改用 __serialize() 和 __unserialize() 魔术方法;若需兼容 PHP 7,可同时使用这两组方法。
将 null 用作数组偏移量或在调用 array_key_exists() 时使用 null 现已废弃,应改用空字符串。
对非数字字符串进行递增操作现已废弃,应改用 str_increment() 函数。
对于非 CLI SAPI,从查询字符串中推导 $_SERVER['argc'] 和 $_SERVER['argv'] 的做法现已废弃。应配置
register_argc_argv=0,并在确认使用安全的前提下,改用 $_GET 或
$_SERVER['QUERY_STRING'] 来获取相关信息。
已废弃 curl_close() 函数,因为 CurlHandle 对象会自动释放。
已废弃 curl_share_close() 函数,因为 CurlShareHandle 对象会自动释放。
已废弃 DATE_RFC7231 和 DateTimeInterface::RFC7231
常量,因为会忽略其关联的时区,始终使用 GMT。
已废弃 imagedestroy() 函数,因为 GdImage 对象会自动释放。
已废弃 MHASH_* 常量。
已废弃 intl.error_level INI 配置项。应手动检查错误,或通过启用 intl.use_exceptions INI 配置项来使用异常处理。
已废弃部分 Oracle Instant Client 调用和常量。受影响的调用列表: 受影响的调用列表:
GSLC_SSL_NO_UATHGSLC_SSL_ONEWAY_UATHGSLC_SSL_TWOWAY_UATH已废弃 mysqli_execute() 别名函数,应改用 mysqli_stmt_execute()。
已废弃 openssl_pkey_derive() 的 $key_length 参数,因为要么忽略该参数,要么会截断密钥,可能引发安全漏洞。
由于来自远程 URI 的 DSN 存在安全风险,已废弃 "uri:" DSN 方案。
已废弃 PDO 类中的驱动专属常量。受影响的常量及其替代项如下:
PDO::DBLIB_ATTR_CONNECTION_TIMEOUT => Pdo\Dblib::ATTR_CONNECTION_TIMEOUTPDO::DBLIB_ATTR_QUERY_TIMEOUT => Pdo\Dblib::ATTR_QUERY_TIMEOUTPDO::DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER => Pdo\Dblib::ATTR_STRINGIFY_UNIQUEIDENTIFIERPDO::DBLIB_ATTR_VERSION => Pdo\Dblib::ATTR_VERSIONPDO::DBLIB_ATTR_TDS_VERSION => Pdo\Dblib::ATTR_TDS_VERSIONPDO::DBLIB_ATTR_SKIP_EMPTY_ROWSETS => Pdo\Dblib::ATTR_SKIP_EMPTY_ROWSETSPDO::DBLIB_ATTR_DATETIME_CONVERT => Pdo\Dblib::ATTR_DATETIME_CONVERTPDO::FB_ATTR_DATE_FORMAT => Pdo\Firebird::ATTR_DATE_FORMATPDO::FB_ATTR_TIME_FORMAT => Pdo\Firebird::ATTR_TIME_FORMATPDO::FB_ATTR_TIMESTAMP_FORMAT => Pdo\Firebird::ATTR_TIMESTAMP_FORMATPDO::MYSQL_ATTR_USE_BUFFERED_QUERY => Pdo\Mysql::ATTR_USE_BUFFERED_QUERYPDO::MYSQL_ATTR_LOCAL_INFILE => Pdo\Mysql::ATTR_LOCAL_INFILEPDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY => Pdo\Mysql::ATTR_LOCAL_INFILE_DIRECTORYPDO::MYSQL_ATTR_INIT_COMMAND => Pdo\Mysql::ATTR_INIT_COMMANDPDO::MYSQL_ATTR_MAX_BUFFER_SIZE => Pdo\Mysql::ATTR_MAX_BUFFER_SIZEPDO::MYSQL_ATTR_READ_DEFAULT_FILE => Pdo\Mysql::ATTR_READ_DEFAULT_FILEPDO::MYSQL_ATTR_READ_DEFAULT_GROUP => Pdo\Mysql::ATTR_READ_DEFAULT_GROUPPDO::MYSQL_ATTR_COMPRESS => Pdo\Mysql::ATTR_COMPRESSPDO::MYSQL_ATTR_DIRECT_QUERY => Pdo\Mysql::ATTR_DIRECT_QUERYPDO::MYSQL_ATTR_FOUND_ROWS => Pdo\Mysql::ATTR_FOUND_ROWSPDO::MYSQL_ATTR_IGNORE_SPACE => Pdo\Mysql::ATTR_IGNORE_SPACEPDO::MYSQL_ATTR_SSL_KEY => Pdo\Mysql::ATTR_SSL_KEYPDO::MYSQL_ATTR_SSL_CERT => Pdo\Mysql::ATTR_SSL_CERTPDO::MYSQL_ATTR_SSL_CA => Pdo\Mysql::ATTR_SSL_CAPDO::MYSQL_ATTR_SSL_CAPATH => Pdo\Mysql::ATTR_SSL_CAPATHPDO::MYSQL_ATTR_SSL_CIPHER => Pdo\Mysql::ATTR_SSL_CIPHERPDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => Pdo\Mysql::ATTR_SSL_VERIFY_SERVER_CERTPDO::MYSQL_ATTR_SERVER_PUBLIC_KEY => Pdo\Mysql::ATTR_SERVER_PUBLIC_KEYPDO::MYSQL_ATTR_MULTI_STATEMENTS => Pdo\Mysql::ATTR_MULTI_STATEMENTSPDO::ODBC_ATTR_USE_CURSOR_LIBRARY => Pdo\Odbc::ATTR_USE_CURSOR_LIBRARYPDO::ODBC_ATTR_ASSUME_UTF8 => Pdo\Odbc::ATTR_ASSUME_UTF8PDO::ODBC_SQL_USE_IF_NEEDED => Pdo\Odbc::SQL_USE_IF_NEEDEDPDO::ODBC_SQL_USE_DRIVER => Pdo\Odbc::SQL_USE_DRIVERPDO::ODBC_SQL_USE_ODBC => Pdo\Odbc::SQL_USE_ODBCPDO::PGSQL_ATTR_DISABLE_PREPARES => Pdo\Pgsql::ATTR_DISABLE_PREPARESPDO::SQLITE_ATTR_EXTENDED_RESULT_CODES => Pdo\Sqlite::ATTR_EXTENDED_RESULT_CODESPDO::SQLITE_ATTR_OPEN_FLAGS => Pdo\Sqlite::OPEN_FLAGSPDO::SQLITE_ATTR_READONLY_STATEMENT => Pdo\Sqlite::ATTR_READONLY_STATEMENTPDO::SQLITE_DETERMINISTIC => Pdo\Sqlite::DETERMINISTICPDO::SQLITE_OPEN_READONLY => Pdo\Sqlite::OPEN_READONLYPDO::SQLITE_OPEN_READWRITE => Pdo\Sqlite::OPEN_READWRITEPDO::SQLITE_OPEN_CREATE => Pdo\Sqlite::OPEN_CREATE已废弃 PDO 类中的驱动专属方法。受影响的方法及其替代项如下:
已废弃与事务状态相关的常量,因为 PDO 不支持此功能:
PDO::PGSQL_TRANSACTION_IDLEPDO::PGSQL_TRANSACTION_ACTIVEPDO::PGSQL_TRANSACTION_INTRANSPDO::PGSQL_TRANSACTION_INERRORPDO::PGSQL_TRANSACTION_UNKNOWN
已废弃各类 Reflection 对象的 setAccessible() 方法,因为这些方法已不再生效。
已废弃调用 ReflectionClass::getConstant() 获取不存在的常量。
已废弃调用 ReflectionProperty::getDefaultValue() 获取无默认值的属性。
已废弃将 spl_autoload_call() 函数作为回调参数传递给 spl_autoload_unregister() 来注销所有自动加载器的做法。如有需要,应遍历 spl_autoload_functions() 的返回值,并对每个元素调用 spl_autoload_unregister()。
已废弃 SplObjectStorage::contains()、SplObjectStorage::attach() 和 SplObjectStorage::detach() 方法,分别推荐使用 SplObjectStorage::offsetExists()、SplObjectStorage::offsetSet() 和 SplObjectStorage::offsetUnset()。
已废弃将 ArrayObject 和 ArrayIterator 与对象一起使用。
已废弃 socket_set_timeout() 别名函数,应改用 stream_set_timeout()。
已废弃将 null 传递给 readdir()、rewinddir() 和 closedir()
以使用最近打开的目录,应显式传入最近打开的目录资源。
现已废弃向 chr() 传入 [0, 255] 区间以外的整数,因为一个字节只能容纳该区间内的值。
现已废弃向 ord() 传入非单字节的字符串,这通常表明存在错误。
已废弃局部预定义变量 $http_response_header,应改用调用 http_get_last_response_headers() 函数。
已废弃 xml_parser_free() 函数,因为 XMLParser 对象会自动释放。