我有使用内置wordpress功能将附件保存到帖子中的权限问题。如果我在上传文件夹中将我的权限设置为 777 ,则以下代码可以正常工作。但是任何其他权限(例如 755 或 775 )都会出现以下错误:
警告:file_put_contents(/usr/home/givakt/www/dev-2013/wp-content/uploads/2013/09/rocky.jpg)[function.file-put-contents] :未能打开流: /usr/home/givakt/www/dev-2013/wp-content/themes/starkers-master/editor/save.php 在线 34上被拒绝
DEV-2013 /可湿性粉剂内容/上传/ 2013/09 / rocky.jpg
我的php文件位于我主题的子文件夹中,可能是问题吗?或者是别的什么?出于安全原因,我真的不想依赖 777 。
$image_url = $_FILES['attachment']['tmp_name'];
$post_id = $_POST['id'];
$upload_dir = wp_upload_dir();
$image_data = file_get_contents($image_url);
$filename = $_FILES['attachment']['name'];
if (wp_mkdir_p($upload_dir['path'])) {
$file = $upload_dir['path'] . '/' . $filename;
} else {
$file = $upload_dir['basedir'] . '/' . $filename;
}
file_put_contents($file, $image_data);
$wp_filetype = wp_check_filetype($filename, null );
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_title' => sanitize_file_name($filename),
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $file, $post_id );
require_once(ABSPATH . 'wp-admin/includes/image.php');
$attach_data = wp_generate_attachment_metadata( $attach_id, $file );
wp_update_attachment_metadata( $attach_id, $attach_data );
答案 0 :(得分:2)
文件夹/ usr / home / givakt / www / dev-2013 / wp-content / uploads / owner是“givakt”。
默认配置网络服务器从另一个用户运行 - “www-data”
如果文件夹右侧为0775,则其他用户无法写入此文件夹。