【问题标题】:Fetching a URL via CURL in PHP results in a Plesk error page在 PHP 中通过 CURL 获取 URL 会导致 Plesk 错误页面
【发布时间】:2014-03-18 18:04:07
【问题描述】:

我有一个奇怪的问题,它可能与 Plesk 相关,也可能不相关。此 PHP 脚本旨在在同一域上执行时获取同一服务器上的页面,例如http://quotationsbook.com/sometestpage.php

<?php
error_reporting('E_ALL');
ini_set('display_errors', 1);
function curlFileGetContents($urlreq) {
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_MAXREDIRS, 50);
    curl_setopt($ch, CURLOPT_URL, $urlreq);
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    $request_result = curl_exec($ch);
    if (curl_errno($ch))
        $response = 0;
    else
        $response = $request_result;
    curl_close($ch);
    return $response;
    }
$url = 'http://quotationsbook.com';
$data = curlFileGetContents($url);
echo '<pre>';
print_r($data);
echo '</pre>';
?>

但是,它不获取请求的页面,它总是获取 Plesk 错误页面。

就 PHP var allow_url_fopen 而言,它设置为 On。

该问题仅发生在托管代码的同一域中,而不发生在其他域中。即它只发生在http://quotationsbook.com 上,而我试图获取的内容位于http://quotationsbook.com/* 下,当我尝试获取http://google.com 时不会发生这种情况@

【问题讨论】:

标签: php curl plesk


【解决方案1】:

您的问题的答案实际上在您的最后一段中。

该问题仅发生在托管代码的同一域中, 不适用于其他域。即它只发生在 http://quotationsbook.com 我要获取的内容在哪里 http://quotationsbook.com/*,当我尝试获取时不会发生 比如说http://google.com

这是你的线索。

我必须提出一个问题,如果您在同一台服务器上,为什么要使用 CURL?你想达到什么目的?可能有比使用 CURL 更好的解决方案。

假设您需要使用 CURL,这可能是防火墙或其他安全问题。确保被访问的端口是打开的并且没有被阻塞。

PHP Curl does not work on localhost?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 2012-12-03
    • 2019-09-27
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 2020-04-07
    相关资源
    最近更新 更多