我的curl代码正在使用PHP 5.5并正确获取页面。但是,运行时我的AWS服务器上的相同代码会拒绝访问,http_code 403.
/**
* Get a web file (HTML, XHTML, XML, image, etc.) from a URL. Return an
* array containing the HTTP server response header fields and content.
*/
public static function get_web_page( $url )
{
$user_agent='Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0';
$options = array(
CURLOPT_CUSTOMREQUEST =>"GET", //set request type post or get
CURLOPT_POST =>false, //set to GET
CURLOPT_USERAGENT => $user_agent, //set user agent
CURLOPT_COOKIEFILE => SITE_URL."/image/cookie.txt", //set cookie file
CURLOPT_COOKIEJAR => SITE_URL."/image/cookie.txt", //set cookie jar
CURLOPT_HTTPGET => TRUE,
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 5, // timeout on connect
CURLOPT_TIMEOUT => 2, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
);
$ch = curl_init( $url );
curl_setopt_array( $ch, $options );
$content = curl_exec( $ch );
$err = curl_errno( $ch );
$errmsg = curl_error( $ch );
$header = curl_getinfo( $ch );
curl_close( $ch );
$header['errno'] = $err;
$header['errmsg'] = $errmsg;
$header['content'] = $content;
return $header;
}
以下是我在服务器上获取请求的响应 -
[url] => http://www.nike.com/us/en_us/launch/c/2015-06/kids-kd7-frozens
[content_type] => text/html
[http_code] => 403
[header_size] => 360
[request_size] => 202
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0.261153
[namelookup_time] => 0.253034
[connect_time] => 0.255159
[pretransfer_time] => 0.25519
[size_upload] => 0
[size_download] => 340
[speed_download] => 1301
[speed_upload] => 0
[download_content_length] => 340
[upload_content_length] => 0
[starttransfer_time] => 0.261114
[redirect_time] => 0
[redirect_url] =>
[primary_ip] => 184.26.199.36
[certinfo] => Array
(
)
[primary_port] => 80
[local_ip] => 172.31.18.124
[local_port] => 37602
[errno] => 0
[errmsg] =>
[content] => <HTML><HEAD>
<TITLE>Access Denied</TITLE>
</HEAD><BODY>
<H1>Access Denied</H1>
You don't have permission to access "http://www.nike.com/us/en_us/launch/c/2015-06/kids-kd7-frozens" on this server.<P>
Reference #18.b1b41160.1446880850.453ef811
</BODY>
</HTML>
)
我正在尝试获取产品的元数据。对于amazon网站,相同的代码正在运行,所以我不确定这是PHP卷曲或特定网站的问题。
如果问题出在网站上,为什么它可以在本地主机上使用PHP 5.3