EXEC( “触摸”);没有在PHP中运行

时间:2012-11-05 09:11:21

标签: php linux unix exec

我需要使用我的php脚本修改文件日期更改。在我的localhost中,我使用了在Windows 7中运行的XAMPP。我使用PHP touch没有问题,并且正如我想要的那样正常工作。

然而,当我将它上传到我的作品LINUX OS时,PHP touch不再起作用了。我调查了它,发现Linux,不允许PHP touch或不允许任何人更改文件模式日期。

这就是为什么我使用exec("touch filename.txt")代替它并且它正常工作,但当我使用此代码时

exec("touch -t 201204040000.00 filename.txt");

它没有做必要的事情,我在这里遗漏了什么吗?

这些是我的参考资料:

修改

ls -l filename.txt
-rw-r--r-- 1 2012-11-04 12:00 filename.txt //supposed that 2012-11-04 12:00 is the original mod date of the file

如果我运行此代码:

exec("touch filename.txt");
ls -l filename.txt
-rw-r--r-- 1 2012-11-05 11:00 filename.txt //supposed that 2012-11-05 11:00 is the current timestamp

上面的代码在我看来都很正常。 但如果我像这样运行它:

exec("touch -t 201204040000.00 filename.txt");
ls -l filename.txt
-rw-r--r-- 1 2012-11-05 11:00 filename.txt //The mod date doesn't changed at all.

1 个答案:

答案 0 :(得分:0)

我执行了你的命令,它确实完成了它应该做的事情:

php -r 'exec("touch -t 201204040000.00 filename.txt");'
ls -l filename.txt
-rw-r--r-- 1 2012-04-04 00:00 filename.txt

如果您告诉我们您的期望,我们可以为您提供更多帮助。