关于PHP copy函数使用时的注意事项
新的功能上线后,测试的时候发现有一个部分报错了,经过调查发现是生产服务器的文件权限发生了改变,将文件权限恢复就好了,但是文件权限不可能无缘无故发生改变,一路顺着文件来源查过去,发现问题出在代码里面的 copy() 方法上
测试
写一个小demo测试一下这个方法:
<?php
$file ='timelog.csv';
$filetest ='timelogtest.csv';
copy($file,$filetest);
先看一下 timelog.csv的权限:
ll timelog.csv
执行一下PHP脚本,确认生成的文件权限:
可以很明显的看出,生成的新文件与原文件的权限不同,所以在进行文件操作的时候,对一些权限比较敏感的文件要慎用copy()方法,如果严格要求文件权限的话,建议使用Linux的cp -p 命令,然后用php的 exec() 函数执行该命令;