【发布时间】:2014-10-08 22:55:39
【问题描述】:
我在 CentOs 6.5 中使用 php 5.4
我正在尝试获取以下 url 的响应代码是我的代码 sn-p
$URL="http://www.bertuccis.com/#menu";
try{
$c = curl_init();
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($c, CURLOPT_USERAGENT,'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36');
curl_setopt($c, CURLOPT_URL, $URL);
$contents = curl_exec($c);
$httpCode = curl_getinfo($c, CURLINFO_HTTP_CODE);
curl_close($c);
echo 'Resp Code ' . $httpCode;
} catch(Exception $ex){
print_r($ex);
}
返回 404 Http 响应码。如果我在浏览器中尝试相同的 url,它会返回 200 Ok。
我尝试在我的 centos 机器的终端上使用 curl -v 但它可以正常工作
这里是 curl 和 php-curl 的版本信息
我的 centos 中的 curl 库是:curl 7.24.0 (x86_64-unknown-linux-gnu) libcurl/7.24.0
我的 php 信息中的 php-curl 信息:
cURL support => enabled
cURL Information => 7.19.7
Age => 3
Features
AsynchDNS => No
Debug => No
GSS-Negotiate => Yes
IDN => Yes
IPv6 => Yes
Largefile => Yes
NTLM => Yes
SPNEGO => No
SSL => Yes
SSPI => No
krb4 => No
libz => Yes
CharConv => No
Protocols => tftp, ftp, telnet, dict, ldap, ldaps, http, file, https, ftps, scp, sftp
Host => x86_64-redhat-linux-gnu
SSL Version => NSS/3.15.3
ZLib Version => 1.2.3
libSSH Version => libssh2/1.4.2
【问题讨论】:
-
尝试删除#menu 部分,看看是否有影响。
-
@Styphone 如果我从 url 中删除 #menu,它会起作用但是同样的 url 也用于许多其他目的。所以我不能修改用户给出的网址
-
我用你的代码得到 200。 (Ubuntu, PHP 5.5, curl 7.35)
-
@Gerald ,您系统中的 Curl 版本将是相同的,我有不同的,如果 linux 用户,您可以在终端上使用 curl -V 和 php -i 检查。如果 curl -V 和 php -i 显示大于 7.19 的相同版本,它会给你 200 Ok
-
好吧,那么解决办法就是更新 curl。
标签: php curl libcurl centos6.5