0

我在使用内置的 wordpress 功能将附件保存到我的帖子时遇到了权限问题。如果我将上传文件夹的权限设置为777,则以下代码可以正常工作。但是任何其他权限(例如755775 )都会给我以下错误:

警告: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/wp-content/uploads/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 );
4

1 回答 1

2

文件夹 /usr/home/givakt/www/dev-2013/wp-content/uploads/ 所有者是“givakt”。

在默认配置 Web 服务器从另一个用户运行 - “www-data”

如果文件夹具有 0775 权限,则其他用户无法写入此文件夹。

于 2013-09-23T14:41:38.303 回答