我正在处理一些PHP代码,这些代码依赖于碰巧托管在pastebin上的远程文件。我正在处理的服务器启用了所有必需的功能,因为设置为FILE_URL
的{{1}}运行它会返回预期的结果。我还通过http://google.com
验证了其他措施。
一切应该有效,但事实并非如此。在这样形成的URL php.ini
上调用file()
会返回500服务器错误。在本地或google.com上托管的完全相同的文件上执行相同操作会返回合理的结果。
我已验证网址已设置为正确的值,并验证远程页面是我认为的位置。我不知所措。
http://pastebin.com/raw.php?i=<paste id here>
答案 0 :(得分:1)
我无法测试这个,但你应该使用curl,尝试这样的事情:
<?php
$url = "http://pastebin.com/2ZdFcEKh";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
答案 1 :(得分:1)
Pastebin似乎使用了一个保护系统,该系统将自动阻止发出“类似bot”的请求的IP地址。
对于您的示例,您将收到500服务器错误,因为file()
命令永远不会完成(因为他们的保护系统永远不会关闭连接)并且您的呼叫中没有超时功能。该脚本可能被视为“类似于bot”,因为file()
没有通过典型浏览器的所有标准HTTP标头。
要解决此问题,我建议您调查cURL,并查看setting a browser user agent作为授予您脚本访问权限的起点。我还应该提一下,调查这是否违反了Pastebin用户协议符合您的利益。虽然我看不到在their FAQ中使用脚本的任何参考(截至2012/12/29),但他们已经安装了针对脚本的保护。