Php 如何在不使用@
Php 如何在不使用@,php,Php,get_headers()如果正在检查的URL无效,则抛出警告。例如: get_头('http://nonexistingrubbish-url.com'); 警告:get_headers():php_network_getaddresses:getaddrinfo失败:未知此类主机 是否可以使用@抑制此错误 我的主要目标是检查URL是否存在,但我不想使用@抑制器。您可以使用curl进行检查,它不会返回任何警告。如果您使用'CURLOPT_NOBODY',则不会尝试下载整个页面 <?php
get_headers()
如果正在检查的URL无效,则抛出警告。例如:
get_头('http://nonexistingrubbish-url.com');代码>
警告:get_headers():php_network_getaddresses:getaddrinfo失败:未知此类主机
是否可以使用@
抑制此错误
我的主要目标是检查URL是否存在,但我不想使用@
抑制器。您可以使用curl进行检查,它不会返回任何警告。如果您使用'CURLOPT_NOBODY',则不会尝试下载整个页面
<?php
$url = "http://nonexistingrubbish-url.com";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_NOBODY, true);
$result = curl_exec($curl);
if ($result !== false) {
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($statusCode == 404) {
echo "URL Not Exists";
} else {
echo "URL Exists";
}
} else {
echo "URL not Exists";
}
您可以使用curl进行检查,它不会返回任何警告。如果您使用'CURLOPT_NOBODY',则不会尝试下载整个页面
<?php
$url = "http://nonexistingrubbish-url.com";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_NOBODY, true);
$result = curl_exec($curl);
if ($result !== false) {
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($statusCode == 404) {
echo "URL Not Exists";
} else {
echo "URL Exists";
}
} else {
echo "URL not Exists";
}
我假设您希望它的处理方式不会干扰您的错误报告
和日志错误
指令。我能想到的唯一办法就是写一封信。以下是PhpMailer库中的一个示例:
:
如有必要,在set\u error\u handler()
调用和处理程序代码本身中总会有额外的内容需要微调。下面是Guzzle使用匿名函数的另一个示例:
我假设您希望它的处理方式不会干扰错误报告
和日志错误
指令。我能想到的唯一办法就是写一封信。以下是PhpMailer库中的一个示例:
:
如有必要,在set\u error\u handler()
调用和处理程序代码本身中总会有额外的内容需要微调。下面是Guzzle使用匿名函数的另一个示例:
在函数之前更改错误报告级别,在函数之后将其还原
// Show all errors except warnings.
error_reporting(E_ALL & ~E_WARNING);
get_headers('http://nonexistingrubbish-url.com');
// revert to the above error reporting level.
error_reporting(E_ALL);
为什么会得到a-1?这段代码[在PHP5.6.3上]有效。试试看
代码示例(复制、上载和享受):
ini\u集(“显示错误”,1);
错误报告(E_全部和~E_警告);
获取标题('http://nonexistingrubbish-url.com');
错误报告(E_全部);
获取标题('http://nonexistingrubbish-url.com');
打印“
完成!”;
此代码将仅输出两条与第5行相关的错误消息。
它还将在下面输出“完成” 在函数之前更改错误报告级别,在函数之后恢复该级别
// Show all errors except warnings.
error_reporting(E_ALL & ~E_WARNING);
get_headers('http://nonexistingrubbish-url.com');
// revert to the above error reporting level.
error_reporting(E_ALL);
为什么会得到a-1?这段代码[在PHP5.6.3上]有效。试试看
代码示例(复制、上载和享受):
ini\u集(“显示错误”,1);
错误报告(E_全部和~E_警告);
获取标题('http://nonexistingrubbish-url.com');
错误报告(E_全部);
获取标题('http://nonexistingrubbish-url.com');
打印“
完成!”;
此代码将仅输出两条与第5行相关的错误消息。
它还将在下面输出“完成” 您可以使用错误报告(E|u error | E|u PARSE)禁用php警告;或错误报告(0);所以你不需要使用@符号。要使用curl,您可以执行类似curl\u getinfo($curl,CURLINFO\u HTTP\u代码)的操作;与CURLOPT_标题
和CURLOPT_返回传输
选项一起使用。(可能是CURLOPT_NOBODY
这取决于您想要什么。)看看您可以通过使用错误报告(E_error | E_PARSE)禁用php警告;或错误报告(0);所以你不需要使用@符号。要使用curl,您可以执行类似curl\u getinfo($curl,CURLINFO\u HTTP\u代码)的操作;与CURLOPT_标题
和CURLOPT_返回传输
选项一起使用。(可能是CURLOPT_NOBODY
取决于你想要什么。)看看IMO,这是最好的方法。也许它在最近的版本中有所改变,但是。IMO这是最好的方法。也许它在最近的版本中有所改变,但是。
// Show all errors except warnings.
error_reporting(E_ALL & ~E_WARNING);
get_headers('http://nonexistingrubbish-url.com');
// revert to the above error reporting level.
error_reporting(E_ALL);
ini_set("display_errors",1);
error_reporting(E_ALL & ~E_WARNING);
get_headers('http://nonexistingrubbish-url.com');
error_reporting(E_ALL);
get_headers('http://nonexistingrubbish-url.com');
print "<br><Br>done!";