官方解释:
copy —拷贝文件
$source
, string$dest
)
将文件从 source
拷贝到dest
。成功时返回TRUE
, 或者在失败时返回FALSE
.
Example #1 copy() 例子
<?php
$file = 'example.txt';
$newfile = 'example.txt.bak';
if (!copy($file, $newfile)) {
echo "failed to copy $file...\n";
}
?>
如果要移动文件的话,请使用 rename() 函数。
例如:copy /Public/Uploads/photo/1.jpg 到 /Public/Uploads/pic/1.jpg
(注意:拷贝的文件名要一样,例如这里的文件名都是1.jpg)
错误写法
copy('/Public/Uploads/photo/1.jpg','Public/Uploads/pic/1.jpg' );
copy('__PUBLIC__/Uploads/photo/1.jpg','__PUBLIC__/Uploads/pic/1.jpg ');
copy('http://...../Public/Uploads/photo/1.jpg','http://.....Public/Uploads/pic/1.jpg' );
正确写法
这里会用到getcwd()函数 (成功则返回当前工作目录,失败返回 FALSE)
例如;
<?php
echo getcwd();
//E:\WampSever\wamp\b
?>
其实就是返回工作的跟目录
copy( getcwd() . "/Public/Uploads/photo/1.jpg", getcwd() . "/Public/Uploads/pic/1.jpg");
这里还有个问题解释哈
当在windows环境下 getcwd()显得的路径是附带的反斜杠'\';
//E:\WampSever\wamp\b
当下linux环境下 getcwd()显示的路径附带的是正斜杠'/'
//E:/WampSever/wamp/b
在windows环境下
1:copy( getcwd() . "/Public/Uploads/photo/1.jpg", getcwd() . "/Public/Uploads/pic/1.jpg");
2:copy( getcwd() . "\Public\Uploads\photo\1.jpg", getcwd() . "\Public\Uploads\pic\1.jpg");
这两种写法都可以通过,但是换到linux环境下只有1可以通过
所以我们直接使用1方法形式或者直接使用 DIRECTORY_SEPARATOR 代替 斜杠
<?php
copy( getcwd() . DIRECTORY_SEPARATOR . 'Public' . DIRECTORY_SEPARATOR . 'Uploads' .
DIRECTORY_SEPARATOR . ' photo' . DIRECTORY_SEPARATOR . '1.jpg', getcwd() . DIRECTORY_SEPARATOR .
'Public' . DIRECTORY_SEPARATOR . 'Uploads' . DIRECTORY_SEPARATOR . ' photo' . DIRECTORY_SEPARATOR .
'1.jpg');
?>
当然这些写太麻烦,可以直接选取用1形式copy.
还dirname(__FILE__); $_SERVER['DOCUMENT_ROOT'] 也可以达到同样的效果...
<?php
echo dirname(__FILE__);
//E:\WampSever\wamp\b
?>