2

我创建了一个内部计费系统,我需要根据客户的计费时间表为客户生成发票,但是我在从 CURL 运行 PHP 脚本时遇到了问题,想知道是否有任何解决方法

我目前有一个 CRON 任务,它运行一个名为 crontask.php 的 php 脚本

crontask.php 然后计算客户是否需要生成发票并通过电子邮件发送给他们。如果它计算出它确实如此,那么它将尝试调用一个 URL,该 URL 将创建发票并使用 CURL 发送电子邮件,即 (www.internal.co.uk/invoicing/geninvoice.php?CUST=10)

    function get_web_page($url)
{
$ua = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13';

    echo "curl:url<pre>".$url."</pre><BR>";
    $options = array(

        CURLOPT_RETURNTRANSFER => true,     // return web page
        CURLOPT_HEADER         => true,    // don't return headers
        CURLOPT_FOLLOWLOCATION => true,     // follow redirects
        CURLOPT_ENCODING       => "",       // handle all encodings
        CURLOPT_USERAGENT      => $ua,    // who am i
        CURLOPT_AUTOREFERER    => true,     // set referer on redirect
        CURLOPT_CONNECTTIMEOUT => 15,      // timeout on connect
        CURLOPT_TIMEOUT        => 15,      // timeout on response
        CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects

    );

    $ch      = curl_init($url);
    curl_setopt_array( $ch, $options );
    $content = curl_exec( $ch );
    $err     = curl_errno( $ch );
    $errmsg  = curl_error( $ch );
    $header  = curl_getinfo( $ch,CURLINFO_EFFECTIVE_URL );
    curl_close( $ch );

    if(isset($header['errno'])) {
    $header['errno']   = $err;
    $header['errmsg']  = $errmsg;
    }

    //change errmsg here to errno
    if (isset($errno)) {
        echo "CURL:".$errmsg."<BR>";
    }
    return $content;
}   

运行此程序时,我在尝试从 PHP 中的 curl 运行时被拒绝访问,

服务器在 virtualmin/webmin 上运行,并且我具有 root 访问权限,是否需要更改或向脚本添加身份验证?

4

0 回答 0