使用CURL运行PHP脚本
我已经创建了一个内部计费系统,我需要根据客户的计费计划为他们生成发票,但是我在从CURL运行PHP脚本时遇到了一个问题,我想知道是否有办法解决这个问题 我目前有一个CRON任务,它运行一个名为crontask.php的php脚本 然后,crontask.php计算客户是否需要生成发票并通过电子邮件发送给他们。如果它计算出是这样的,那么它将尝试调用一个url来创建发票,并使用CURL发送电子邮件,即(www.internal.co.uk/invoicing/geninvoice.php?CUST=10)使用CURL运行PHP脚本,php,curl,cron,webmin,Php,Curl,Cron,Webmin,我已经创建了一个内部计费系统,我需要根据客户的计费计划为他们生成发票,但是我在从CURL运行PHP脚本时遇到了一个问题,我想知道是否有办法解决这个问题 我目前有一个CRON任务,它运行一个名为crontask.php的php脚本 然后,crontask.php计算客户是否需要生成发票并通过电子邮件发送给他们。如果它计算出是这样的,那么它将尝试调用一个url来创建发票,并使用CURL发送电子邮件,即(www.internal.co.uk/invoicing/geninvoice.php?CUST=
函数获取网页($url)
{
$ua='Mozilla/5.0(Windows;U;Windows NT 5.1;en-US)AppleWebKit/525.13(KHTML,像Gecko)Chrome/0.A.B.C Safari/525.13';
回显“curl:url”。$url.
”;
$options=array(
CURLOPT_RETURNTRANSFER=>true,//返回网页
CURLOPT_HEADER=>true,//不返回头
CURLOPT_FOLLOWLOCATION=>true,//跟随重定向
CURLOPT_ENCODING=>“”,//处理所有编码
CURLOPT_USERAGENT=>ua,//我是谁
CURLOPT_AUTOREFERER=>true,//在重定向时设置referer
CURLOPT_CONNECTTIMEOUT=>15,//连接超时
CURLOPT_TIMEOUT=>15,//响应超时
CURLOPT_MAXREDIRS=>10,//在10次重定向后停止
);
$ch=curl\u init($url);
curl_setopt_数组($ch$options);
$content=curl\u exec($ch);
$err=curl\u errno($ch);
$errmsg=curl\u error($ch);
$header=curl\u getinfo($ch,CURLINFO\u有效\u URL);
卷曲关闭($ch);
if(isset($header['errno'])){
$header['errno']=$err;
$header['errmsg']=$errmsg;
}
//将此处的errmsg更改为errno
如果(isset($errno)){
回声“CURL:.$errmsg.
”;
}
返回$content;
}
当运行这个程序时,当我试图在PHP中从curl运行时,访问被拒绝
服务器在virtualmin/webmin上运行,我有根访问权限,是否需要更改或向脚本添加身份验证?您可以直接在浏览器中调用URL吗?@RaggaMuffin-420是的,我可以
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;
}