我创建模块并使用file_get_content函数,但无法成功。
function openURL($url, $use_include_path = false, $stream_context = null, $curl_timeout = 500)
{
if ($stream_context == null && preg_match('/^https?:\/\//', $url)) {
$stream_context = @stream_context_create(array('http' => array('timeout' => $curl_timeout)));
}
print_r($stream_context);
if (in_array(ini_get('allow_url_fopen'), array('On', 'on', '1')) || !preg_match('/^https?:\/\//', $url)) {
return file_get_contents($url, $use_include_path, $stream_context);
} elseif (function_exists('curl_init')) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, $curl_timeout);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
if ($stream_context != null) {
$opts = stream_context_get_options($stream_context);
if (isset($opts['http']['method']) && Tools::strtolower($opts['http']['method']) == 'post') {
curl_setopt($curl, CURLOPT_POST, true);
if (isset($opts['http']['content'])) {
parse_str($opts['http']['content'], $post_data);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
}
}
}
$content = curl_exec($curl);
curl_close($curl);
return $content;
} else {
return false;
}
}
filet_get_content函数出错:
Warning: file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known
请帮忙 感谢
答案 0 :(得分:1)
这意味着您的服务器无法连接到外部世界
鉴于DNS问题,这可能无法改变任何内容
因此,如果您有权限,请尝试将/etc/resolv.conf文件中的名称服务器更改为其他名称服务器。
或
httpd允许连接外部。检查你的selinux政策。这有助于我解决连接问题:
setsebool -P nis_enabled 1
setsebool -P httpd_can_network_connect 1
答案 1 :(得分:1)
你必须仔细检查两件事:
虽然,为了尊重Prestashop的标准,您应该使用Tools :: file_get_contents(),它将围绕调试函数包装您的请求。
答案 2 :(得分:0)
请检查您从中获取内容的网址。可能是目标网址不起作用还是不存在?