【发布时间】:2016-07-21 20:03:00
【问题描述】:
rename() 从命令行运行良好,但从 cron 作业运行时,rename() 不能。由于 connect.php 文件有效,我假设 cron 作业位于正确的目录中,但无法弄清楚为什么 rename() 不起作用。我尝试了绝对路径,但它们不起作用:
<?php
include 'connect.php';
$oldlocation='xxx/xxx/'.$oldfilename;
$newlocation='yyyy/xxx/'.$newfilename;
$move=rename("$oldlocation","$newlocation");
cron作业:* * * * * /usr/bin/php /usr/xxx/xxx/xxx/xxx.php -q -f
我没有对服务器的 root 访问权限。这应该通过 SHELL 脚本运行吗?
【问题讨论】:
-
您的
$oldlocation和$newlocation似乎是作为相对路径给出的。 Cron 可能会从不同的位置执行您的脚本,请尝试将它们设为绝对位置。 -
您确定您的绝对路径设置正确吗? Cron 绝对不适用于相对路径,但您必须确保您的绝对路径是从根目录定义的 - 类似于
include '/home/youraccount/public_html/includes/connect.php'; -
connect.php 文件的工作方式完全如图所示,我不知道为什么,但是 rename() 需要绝对路径,我在路径的开头缺少 /,php 不需要我猜在浏览器或命令行中,但绝对路径需要,我再次猜测,但会研究。感谢您的回复