Php Cron作业具有不同的输出,然后在浏览器中运行脚本

Php Cron作业具有不同的输出,然后在浏览器中运行脚本,php,linux,unix,cron,Php,Linux,Unix,Cron,我在我的服务器上运行以下代码,该脚本在浏览器中运行良好,但当我在cronjob中或通过以root用户身份登录的shell尝试它时,我得到了完全不同的输出 通过浏览器输出: 登录并获取我想要的页面 通过shell/cron输出: 似乎没有登录,但获取页面内容,将我重定向回登录页面。 我正在使用red hat linux 5 <?php $url = "http://www.domain.com/shopper_lookup.asp"; // the url where to send th

我在我的服务器上运行以下代码,该脚本在浏览器中运行良好,但当我在cronjob中或通过以root用户身份登录的shell尝试它时,我得到了完全不同的输出

通过浏览器输出:

登录并获取我想要的页面 通过shell/cron输出:

似乎没有登录,但获取页面内容,将我重定向回登录页面。 我正在使用red hat linux 5

<?php

$url = "http://www.domain.com/shopper_lookup.asp"; // the url where to send the request
$fields_send = 'shopper_username=USERNAME&shopper_password=PASSWORD&Validate=1';
$agent = "Opera/9.63 (Windows NT 5.1; U; en-GB) Presto/2.1.1";
$reffer = "http://www.domain.com/login.html";
$cookie_file_path = "/var/www/vhosts/domain.co.uk/httpdocs/store/cookie"; // Cookie File Path with CHMOD 777

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$fields_send);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_REFERER, $reffer);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
$result_source = curl_exec($ch);

var_dump($ch);

echo $result_source;




$url = "http://www.domain.com/receipt.asp?ms=&order_id=ordernumber"; // the url where to send the request
$agent = "Opera/9.63 (Windows NT 5.1; U; en-GB) Presto/2.1.1";
$reffer = "http://www.domain.com/contents.asp?ms=";
$cookie_file_path = "/var/www/vhosts/domain.co.uk/httpdocs/store/cookie"; // Cookie File Path with CHMOD 777

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_GET, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_REFERER, $reffer);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
$result_source = curl_exec($ch);


echo $result_source; // Print the result page


?>

首先检查命令的输出,如果您以web用户的身份执行该命令,通常使用www数据

su www-data /usr/bin/php /var/www/vhosts/domain.co.uk/httpdocs/store/curl_test.php

如果有效,则这是一个权限错误,因此请确保运行cron作业的用户可以写入文件/var/www/vhosts/domain.co.uk/httpdocs/store/cookie

您是否以root用户身份从cron运行此脚本?通过浏览器运行是什么意思?我假设这是一个脚本,通过浏览器可以通过url访问它?还有什么是cron作业命令?您使用的是什么特权?我以root用户身份通过SSH登录并运行了这个命令/usr/bin/php/var/www/vhosts/domain.co.uk/httpdocs/store/curl_test.php如果我使用php作为shell脚本运行它,您就没有任何“web”功能,您可以通过浏览器访问-所以cookies,会话等不起作用,这可能是您被发送回登录屏幕的原因?您声称此脚本用于从命令行在另一台服务器上工作,并且在从浏览器调用时可以工作。由于PHP通常对Web服务器和命令行使用不同的PHP.ini配置,因此比较两种配置(如果有)可以得出正确的方向。我发现了在/etc/PHP.ini中将PHP安全模式设置为On,而在Apache配置文件中将安全模式设置为Off的原因,现在一切正常了!干杯