我有一个在服务器上执行的脚本。 此脚本重命名文件以将其移动到嵌套目录。
该脚本位于: 的/ var / WWW /虚拟主机/ XXXXX /的httpdocs / XXXXX / import_export /订单
应移动文件并将其重命名为: 的/ var / WWW /虚拟主机/ XXXXX /的httpdocs / XXXXX / import_export /命令/备份
备份目录的权限是755
这是我的代码:
var fixHelperModified = function(e, tr) {
var $originals = tr.children();
var $helper = tr.clone();
$helper.children().each(function(index) {
$(this).width($originals.eq(index).width())
});
return $helper;
},
updateIndex = function(e, ui) {
$('td.index', ui.item.parent()).each(function (i) {
$(this).html(i + 1);
});
};
此代码返回true,但该文件仍存在于源文件夹中,尚未移至备份文件夹。
如果我在本地主机上执行脚本,重命名和移动工作就可以了。
有什么问题?
答案 0 :(得分:0)
您应该尝试在两个参数中提供完整路径,例如
$basePath = '/var/www/vhosts/XXXXX/httpdocs/XXXXX/import_export/orders';
$currentFileName = $basePath . '/order.csv';
$newFileName = $basePath . '/backup/orders-' . $dateString . '.csv';
$result = rename($currentFileName, $newFileName);
答案 1 :(得分:0)
使用file_exists()
和is_writable()
预先进行一些安全检查是个好主意。如果rename()
返回false,您还可以使用error_get_last()
显示错误,如下所示:
if (!rename('orders.csv', $newFilename)) {
$error = error_get_last();
// TODO: DO something with $error
}
答案 2 :(得分:0)
PHP:rename()无声地失败但返回true
设置error_reporting(E_ALL);
和ini_set('display_errors', '1');
以便正确调试脚本,即:
<?php
//comment on production mode
error_reporting(E_ALL);
ini_set('display_errors', '1');
// the rest of the code...
您的rename
阻止似乎缺少原始文件的完整路径,date
阻止冗余。您可能想在使用is _writable()
之前检查目的地目录rename()
,这是我要做的事情:
<?php
date_default_timezone_set( "Europe/Lisbon" ); // Set the default timezone to avoid warnings
$dateString = date('d-m-Y'); // no neeed for $now here, it's redundant
$destDir = "/var/www/vhosts/XXXXX/httpdocs/XXXXX/import_export/orders/backup/";
$destFn = "orders-{$dateString}.csv";
if(is_writable($destDir)){ //check if the destination dir is writable
$result = rename('/full/path/to/orders.csv', $destDir.$destFn); // we need to set the full path of "orders.csv"
var_dump($result);
}else{
echo "destination dir not writable";
}