我被困在一个cron脚本中,需要你的帮助。
我的网站托管在1and1服务器上。我使用类函数结构在php中编写了一个cron脚本。
实际上有两个脚本。那些是: 1)init.php 2)job.php
在init.php中,我编写了必要的类和函数。 在job.php脚本中,我已经在顶部和底部包含了init.php,我已经编写了其他功能(数据库查询和发送电子邮件)。
如果我直接使用浏览器(http://www.abc.com/job.php)执行脚本,则脚本执行正常。我收到了电子邮件。 但是,在使用shell将此脚本设置为cron任务后,我没有得到任何响应。我不知道如何检查cron的错误日志。
php文件的示例结构如下:
的init.php:
define('DB_SERVER','***********');
define('DB_USERNAME','*******');
define('DB_PASSWARD','******');
define('DB_DATABASE','*******');
class information{
public function __construct(){
$connection = mysql_connect(DB_SERVER,DB_USERNAME,DB_PASSWARD) or die ('connection error'.mysql_error());
mysql_select_db(DB_DATABASE,$connection) or die('database error'.mysql_error());
}
public function configuration(){
$sql = "SELECT * FROM config order by id";
$exe = mysql_query($sql);
$site_config = array();
while($res = mysql_fetch_array($exe)){
$site_config[$res['name']]=$res['value'];
}
return $site_config;
}
}
$obj = new information;
job.php:
要求( '的init.php');
class Achdirect_cmi
{
private $ID;
private $AID;
private $Key;
public $site_config;
public function __construct()
{
global $obj;
$this->site_config = $obj->configuration();
$this->ID = $this->site_config['id'];
$this->AID = $this->site_config['A_id'];
$this->Key = $this->site_config['key'];
}
.
.
.
.
}
请帮我执行此脚本。
**使用SSH访问设置cron作业。
下面提到的命令已用于设置cron脚本。
要检查我的shell命令和配置是否执行,我也添加了一个测试脚本。测试脚本正确执行。**
逐个分析功能后,我发现下面的代码没有执行。变量已正确初始化但未创建“SoapClient”对象。请注意,SoapClient类不是由我定义的,而是php5的核心功能。
try{
$client = new SoapClient($url, array("location" => $location));
$params = array("ticket" => $auth_array, "MerchantID" => $MerchantID, "TransactionID" => $trace_number );
$response = $client->getTransaction($params);
}
catch (Exception $e){
echo $e->getMessage();
}
请建议我需要。
答案 0 :(得分:0)
您的问题很可能是“require('init.php');”
cron作业从cron所在的位置运行,而不是从job.php文件的路径运行。因此,如果要包含该文件,则应包括包含文件的完整路径。
require('/a/b/htdocs/scripts/init.php');
(如果这是正确的目录 - 似乎是一个有趣的命名结构!)