PHP:rename()以静默方式失败,但返回true
我有一个在服务器上执行的脚本。 此脚本重命名文件以将其移动到嵌套目录 脚本位于: /var/www/vhosts/XXXXX/httpdocs/XXXXX/import\u export/orders 应将文件移动并重命名为: /var/www/vhosts/XXXXX/httpdocs/XXXXX/import\u export/orders/backup 备份目录的权限为755 这是我的密码:PHP:rename()以静默方式失败,但返回true,php,rename,Php,Rename,我有一个在服务器上执行的脚本。 此脚本重命名文件以将其移动到嵌套目录 脚本位于: /var/www/vhosts/XXXXX/httpdocs/XXXXX/import\u export/orders 应将文件移动并重命名为: /var/www/vhosts/XXXXX/httpdocs/XXXXX/import\u export/orders/backup 备份目录的权限为755 这是我的密码: $now = time(); $dateString = date('d-m-Y', $now);
$now = time();
$dateString = date('d-m-Y', $now);
$newFileName = '/var/www/vhosts/XXXXX/httpdocs/XXXXX/import_export/orders/backup/orders-' . $dateString . '.csv';
$result = rename('orders.csv', $newFileName);
var_dump($result);
此代码返回true,但该文件仍存在于源文件夹中,并且尚未移动到备份文件夹
如果我在本地主机上执行脚本,重命名和移动就可以了
怎么了?您应该尝试在两个参数中提供完整路径,例如
$basePath = '/var/www/vhosts/XXXXX/httpdocs/XXXXX/import_export/orders';
$currentFileName = $basePath . '/order.csv';
$newFileName = $basePath . '/backup/orders-' . $dateString . '.csv';
$result = rename($currentFileName, $newFileName);
您应该尝试在两个参数中提供完整路径,例如
$basePath = '/var/www/vhosts/XXXXX/httpdocs/XXXXX/import_export/orders';
$currentFileName = $basePath . '/order.csv';
$newFileName = $basePath . '/backup/orders-' . $dateString . '.csv';
$result = rename($currentFileName, $newFileName);
使用
file\u exists()
和is\u writable()
预先进行一些安全检查是个好主意,如下所示。您还可以使用ifrename()
返回false显示错误,如下所示:
if (!rename('orders.csv', $newFilename)) {
$error = error_get_last();
// TODO: DO something with $error
}
使用
file\u exists()
和is\u writable()
预先进行一些安全检查是个好主意,如下所示。您还可以使用ifrename()
返回false显示错误,如下所示:
if (!rename('orders.csv', $newFilename)) {
$error = error_get_last();
// TODO: DO something with $error
}
PHP:rename()以静默方式失败,但返回true
设置错误报告(E\u ALL)代码>和ini_集('display_errors','1')代码>以便正确调试脚本,即:
<?php
//comment on production mode
error_reporting(E_ALL);
ini_set('display_errors', '1');
// the rest of the code...
PHP:rename()以静默方式失败,但返回true
设置错误报告(E\u ALL)代码>和ini_集('display_errors','1')代码>以便正确调试脚本,即:
<?php
//comment on production mode
error_reporting(E_ALL);
ini_set('display_errors', '1');
// the rest of the code...
注意:$now
业务毫无意义date()
如果不提供时间值,则默认使用“现在”。您是否尝试过为orders.csv指定完整路径?当您询问有关错误的问题时,请始终发布错误日志。要在php代码中启用错误报告,请附加错误报告(E_ALL);ini_集('display_errors','1')代码>在脚本的顶部,它返回什么?您是服务器的所有者吗?并且您有权通过运行代码来移动文件。注意:$now
业务毫无意义date()
如果不提供时间值,则默认使用“现在”。您是否尝试过为orders.csv指定完整路径?当您询问有关错误的问题时,请始终发布错误日志。要在php代码中启用错误报告,请附加错误报告(E_ALL);ini_集('display_errors','1')代码>在脚本的顶部,它返回什么?您是服务器的所有者吗?并且您有权通过运行代码来移动文件。我认为这是许可问题。最好包括一个代码示例或更深入的解释,说明你认为如何解决这个问题。否则,您的答案可能会被标记为低质量。最好包含一个代码示例或更深入的解释,说明您认为问题可以如何解决。否则,您的答案可能会被标记为低质量。