What should I do if phpcms cannot be collected?
The main reason why https website content cannot be collected is that https does not support file_get_contents to obtain content, so you can consider using curl to obtain it. (You need to enable curl, which can be viewed in pathinfo)
(1) Open phpcms\modules\collection\classes\collection.class.php
Add new functions in the class:
protected static function curl_request($url){ if (!function_exists('curl_init')) { throw new Exception('server not install curl'); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_HEADER,0); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);//禁止调用时就输出获取到的数据 curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false); $result = curl_exec($ch); curl_close($ch); return $result; }
(2) Find the function get_htm, change the function
protected static function get_html($url, &$config) { if (!empty($url) && $html = @file_get_contents($url)) { if ($syscharset != $config['sourcecharset'] && $config['sourcetype'] != 4) { $html = iconv($config['sourcecharset'], CHARSET.'//TRANSLIT//IGNORE', $html); } return $html; } else { return false; } }
to
protected static function get_html($url, &$config) { if(substr(trim($url),0, 5) == "https"){ $html = @self::curl_request($url); }else{ $html = @file_get_contents($url); } if (!empty($url) && $html) { if ($syscharset != $config['sourcecharset'] && $config['sourcetype'] != 4) { $html = iconv($config['sourcecharset'], CHARSET.'//TRANSLIT//IGNORE', $html); } return $html; } else { return false; } }
and save it to obtain the test result
I don’t know if there are any other bugs, please leave a message for feedback!
PHP Chinese website, a large number of free PHPCMS tutorials, welcome to learn online!
The above is the detailed content of What to do if phpcms cannot be collected. For more information, please follow other related articles on the PHP Chinese website!