我创建了一个内部计费系统,我需要根据客户的计费时间表为客户生成发票,但是我在从 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 访问权限,是否需要更改或向脚本添加身份验证?