我有一个PHP脚本,可以返回网页上的链接。我收到500内部错误,这是我的服务器日志所说的。我让我的朋友在他的服务器上尝试相同的代码,它似乎运行正常。有人可以帮我调试我的问题吗?警告说有关包装器的信息已被禁用。我检查了第1081行,但我没有看到allow_url_fopen
。
PHP警告:file_get_contents():http://在服务器配置中禁用了包装器,在第1081行的/hermes/bosweb/web066/b669/ipg.streamversetv/simple_html_dom.php中由allow_url_fopen = 0禁用
PHP警告:file_get_contents(http://www.dota2lounge.com/):无法打开流:在第1081行的/hermes/bosweb/web066/b669/ipg.streamversetv/simple_html_dom.php中找不到合适的包装器
PHP致命错误:在/hermes/bosweb/web066/b669/ipg.streamversetv/sim
中调用非对象上的成员函数find()
<?php
include_once('simple_html_dom.php');
$target_url = 'http://www.dota2lounge.com/';
$html = new simple_html_dom();
$html->load_file($target_url);
foreach($html->find(a) as $link){
echo $link->href.'<br />';
}
?>
答案 0 :(得分:5)
下载最新的simple_html_dom.php:LINK TO DOWNLOAD
在您喜欢的编辑器中打开simple_html_dom.php并将此代码添加到前几行(可以在<?php
之后添加):
function file_get_contents_curl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
curl_close($ch);
return $data; }
查找以function file_get_html($url.....
开头的行,对我来说是第71行,但您也可以在编辑器中使用搜索。 (搜索file_get_html)
编辑此行(函数file_get_html之后的某些行):
$contents = file_get_contents($url, $use_include_path, $context, $offset);
到此:
$contents = file_get_contents_curl($url);
使用file_get_html代替load_file,它可以为你工作,无需编辑php.ini
答案 1 :(得分:1)
您需要将allow_url_fopen
php设置为1,以允许{ur}使用fopen()
。
修改强>
还跟踪了另一件事,你试过这种方式加载吗?
<?php
include_once('simple_html_dom.php');
$html = file_get_html('http://www.dota2lounge.com/');
foreach($html->find('a') as $link)
{
echo $link->href.'<br />';
}
?>