Rap*_*tor 4 php file-upload chmod
使用PHP上传图像后,我想使图像文件可写,以便为其添加水印.以下是我使用的代码:
if(isset($_FILES['file_poster']['tmp_name']) && $_FILES['file_poster']['tmp_name'] != '') {
$random_filename = substr(md5(time()), 0, 9);
$ext = '.jpg';
if(strpos(strtolower($_FILES['file_poster']['name']), '.png') > -1) {
$ext = '.png';
}
move_uploaded_file($_FILES['file_poster']['tmp_name'], 'uploads/' . $random_filename . $ext);
chmod(ABS_PATH . $random_filename, 0666);
$random_filename = 'uploads/' . $random_filename . $ext;
// add watermark codes omitted
}
Run Code Online (Sandbox Code Playgroud)
上载文件后,文件权限变为644.然后我尝试使用chmod()将其更改为可写(666),但权限不会更改.
该/uploads文件夹具有权限777.是否有任何原因导致chmod()功能无法更改权限?还是有解决方法?
注意:使用PHP 5.GD正常运作.
Phi*_*hil 13
看起来你需要交换最后两行,例如
$random_filename = 'uploads/' . $random_filename . $ext;
chmod(ABS_PATH . $random_filename, 0666);
Run Code Online (Sandbox Code Playgroud)
使用相对路径时要非常小心'uploads/' . $random_filename . $ext.如果工作文件包含在另一个文件中,则当前目录可能不同.
我会推荐这样的东西
$destFile = __DIR__ . '/uploads/' . $random_filename . $ext;
move_uploaded_file($_FILES['file_poster']['tmp_name'], $destFile);
chmod($destFile, 0666);
Run Code Online (Sandbox Code Playgroud)
其中,魔术__DIR__常量始终包含您实际所在文件的父目录的绝对路径.
| 归档时间: |
|
| 查看次数: |
22606 次 |
| 最近记录: |