組み込みのワードプレス機能を使用して投稿に添付ファイルを保存する際に、許可の問題があります。次のコードは、アップロードフォルダーで権限を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/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 );