我有一个php文件,我在其中使用ftp_get()函数。当我从服务器localhost运行它时它运行正常,但当我从计划任务运行它时,它给出了错误。这是我的代码。
<?php
$ftp_server = "IP";
$conn_id = ftp_connect ($ftp_server)
or die("Couldn't connect to $ftp_server");
$login_result = ftp_login($conn_id, "syslog", "Gms$67");
if ((!$conn_id) || (!$login_result))
die("FTP Connection Failed");
ftp_pasv($conn_id, true);
echo "Start time:".date("d-m-Y h:i:sa")."<br/>";
ftp_sync ("."); // Use "." if you are in the current directory
echo "<br/>End time:".date("d-m-Y h:i:sa")."<br/>";
ftp_close($conn_id);
// ftp_sync - Copy directory and file structure
function ftp_sync ($dir) {
global $conn_id;
if ($dir != ".") {
if (ftp_chdir($conn_id, $dir) == false) {
echo ("Change Dir Failed: $dir<BR>\r\n");
return;
}
if (!(is_dir($dir)))
mkdir($dir);
chdir ($dir);
}
$contents = ftp_nlist($conn_id, ".");
foreach ($contents as $file) {
if ($file == '.' || $file == '..')
continue;
if (@ftp_chdir($conn_id, $file)) {
ftp_chdir ($conn_id, "..");
ftp_sync ($file);
}
else
{
if(ftp_get($conn_id, "files/syslog.txt", $file, FTP_BINARY))
{
$mbody= nl2br(file_get_contents("files/syslog.txt"));
//$f = fopen('files/syslog.txt', 'r+');
//$mbody = fread($f, filesize("files/syslog.txt"));
//fclose($f);
$resArray = explode("\n",$mbody);
foreach($resArray as $r) {
$ArrayResults[] = explode(" ",$r,6);
}
/*echo "<pre>";
print_r($ArrayResults);
echo "</pre>";*/
$fields="srdate,srtime,facility,severity,host,message";
foreach ($ArrayResults as $rowValues) {
//echo "vip==".$rowValues[0]."--<br/>";
if($rowValues[0]!="")
{
$serarray = explode(".",$rowValues[2]);
//echo "servi=".$serarray[1]."<br/>";
$facility=$serarray[0];
$severity=$serarray[1];
/*foreach ($rowValues as $key => $rowValue) {
$rowValues[$key] = mysql_real_escape_string($rowValues[$key]);
}*/
$rowValues1[0] = mysql_real_escape_string($rowValues[0]);
$rowValues1[1] = mysql_real_escape_string($rowValues[1]);
$rowValues1[2] = mysql_real_escape_string($facility);
$rowValues1[3] = mysql_real_escape_string($severity);
$rowValues1[4] = mysql_real_escape_string($rowValues[3]);
$rowValues1[5] = mysql_real_escape_string($rowValues[5]);
$values[] = "('" . implode('\', \'', $rowValues1) . "')";
unset($serarray);
}
}
include("config.php");
$query = "INSERT INTO syslogtbl ($fields) VALUES " . implode (', ', $values) . "";
if(mysql_query($query))
{
echo "Successfully Insert to Database.";
}
else
{
echo "<br/>Error in insert syslog".mysql_error();;
}
}
else
{
echo "Error downloading $server_file.";
}
}
}
ftp_chdir ($conn_id, "..");
chdir ("..");
}
?>
当我从计划任务运行时,它显示没有任何错误,但输出中没有任何变化(它必须改变)。然后我从批处理文件运行文件,它在命令提示符中显示错误。
C:\script>C:\wamp\bin\php\php5.5.12\php.exe C:\wamp\www\syslog\schedule_readtxt.php
Start time:24-11-2016 12:33:41pm<br/>
Warning: ftp_get(files/syslog.txt): failed to open stream: No such file or directory in C:\wamp\www\syslog\schedule_readtxt.php on line 69
Call Stack:
0.0000 250200 1. {main}() C:\wamp\www\syslog\schedule_readtxt.php:0
0.0156 259928 2. ftp_sync() C:\wamp\www\syslog\schedule_readtxt.php:35
0.0156 261832 3. ftp_get() C:\wamp\www\syslog\schedule_readtxt.php:69
Warning: ftp_get(): Error opening files/syslog.txt in C:\wamp\www\syslog\schedul
e_readtxt.php on line 69
Call Stack:
0.0000 250200 1. {main}() C:\wamp\www\syslog\schedule_readtxt.php:0
0.0156 259928 2. ftp_sync() C:\wamp\www\syslog\schedule_readtxt.php:35
0.0156 261832 3. ftp_get() C:\wamp\www\syslog\schedule_readtxt.php:69
Notice: Undefined variable: server_file in C:\wamp\www\syslog\schedule_readtxt.p
hp on line 118
Call Stack:
0.0000 250200 1. {main}() C:\wamp\www\syslog\schedule_readtxt.php:0
0.0156 259928 2. ftp_sync() C:\wamp\www\syslog\schedule_readtxt.php:35
Error downloading .<br/>End time:24-11-2016 12:33:41pm<br/>
C:\script>pause
Press any key to continue . . .
我不知道如何从计划任务运行此脚本。请帮帮我。