无效参数
问题描述:
会有人心中检查下面的PHP代码。 https://www.linuxliteos.com/test_info/download.php返回:无效参数
警告: /home/myhosthere/public_html/test_info/download.php为的foreach()供给线27
<?
ini_set('max_execution_time', '18000');
require_once('config.php');
$ftp_server = 'ftpipaddresshere';
$ftp_user_name = 'user';
$ftp_user_pass = 'password';
$conn_id = @ftp_connect($ftp_server, 21);
if(!$conn_id)
{
echo 'Error: Some problem in Connecting to Server!';
}
else
{
ftp_pasv($conn_id, true);
$login_result = @ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if(!$login_result)
{
$error_msg = 'Error: Some problem in Connecting to Vendor Server! Cron Job failed on '.date('m/d/Y H:i:s');
}
else
{
$arr_files = ftp_rawlist($conn_id, './upload');
$arr_list = array();
if(count($arr_files))
{
foreach($arr_files as $str_file)
{
preg_match('|-rw-r--r-- 1 hwdb hwdb.+ (\d+) ([a-zA-Z]{3} .+\d+ \d+\:\d+) (.*)|', trim($str_file), $arr_details);
$arr_list[] = $arr_details[3];
}
}
$arr_final_list = array();
foreach($arr_list as $file_name)
{
if (@ftp_get($conn_id, '/home/myhost/public_html/test_info/upload/'.$file_name, 'upload/'.$file_name, FTP_BINARY)) {
$arr_final_list[] = $file_name;
//chmod('upload/'.$file_name, 0666);
echo "processed";
//Now do ftp delete
ftp_rename($conn_id, 'upload/'.$file_name, 'processed/'.$file_name);
}
else
{
echo "error";
}
}
}
}
?>
的config.php
参数无效<?
$host="localhost";
$user="dbuser";
$password="password";
$database="db";
$conn = mysqli_connect($host,$user,$password,$database);
?>
预先感谢您。
答
功能ftp_rawlist
可以返回false
:
返回,其中每个元素对应于一个文本行的阵列。传递目录无效时返回
FALSE
。
这样会使$arr_files
为假。用PHP有趣的是,它为count(false)
返回1。
所以,你会那么需要测试这种情况:
if ($arr_files !== false)
没有必要检查次数,因为foreach
循环将不反正然后重复。
使用'var_dump'检查什么类型的变量实际上是它们包含在该点什么。 – CBroe
取代'$ arr_files = ftp_rawlist($ conn_id, './upload');''到$ arr_files =阵列(); $ arr_files = ftp_rawlist($ conn_id, './upload');' – diavolic