Понадобилась функция для постинга постов на стену группы, начал гуглить нашел пару примеров но они не работали, оказалось вк поменял что то в api и пришлось вникать и курить мануалы. Часто натыкался на проблемы даже щас есть одна пока постяться только картинки с текстом не гифки. Щас этот вопрос решаю с тех. поддержкой "ошибка отказано в доступе на добавление документов". Прикрепить по api можно не более 5 картинок к одному посту. в качестве параметра обязательно передать массив с параметрами $token его получаем после создания своего приложения и авторизации. $group_id это id группы можно найти в адресной строке. $album_id это id альбома куда нужно загружать фотографии его тоже можно посмотреть в адресной строке зайдя в альбом. $text любой текст который хотите опубликовать можно прикреплять хештеги пример #teg1 #teg2 и тд. $files это массив с файлами как я и говорил максимум 5 штук, но если вы закинете больше скрипт загрузит всеровно только 5 шт. PHP: if($info[2] == 1) тут сравнивается с 1 потому что функция getimagesize возвращает 1 к типу gif. Так вроде все расписал. Кому надо берите. и еще токен должен быть минимм с доступом photos,wall . Скрипт не идеален. Кто хочет допилить прошу. PHP: function add_post_vk($mas){ $token = $mas['token']; $group_id = $mas['group_id']; $album_id = $mas['album_id']; $message = $mas['text']; $v = '5.62'; //версия vk api $res_file = []; (count($mas['files']) > 5 ? $count = 5 : $count = count($mas['files'])); for($i = 0; $i < $count;$i++){ $file = new CURLFile(realpath($mas['files'][$i])); $info = getimagesize($mas['files'][$i]); if($info[2] == 1){ continue; $post_data = array("file" => $file); // получаем урл для загрузки $url = file_get_contents("https://api.vk.com/method/docs.getUploadServer?group_id=".$group_id."&v=".$v."&access_token=".$token); $url = json_decode($url)->response->upload_url; //// отправка post картинки $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); $r = curl_exec($ch); $result = json_decode($r,true); $params = array( 'access_token' => $token, 'group_id' => $group_id, 'file' => $result['file'], 'v' => $v, ); $safe = json_decode(file_get_contents('https://api.vk.com/method/docs.save' . '?' .http_build_query($params)), true); $res_str .= 'doc '.$safe['response'][0]['owner_id'].'_'.$safe['response'][0]['id'].','; }else{ $post_data = array("photo" => $file); // получаем урл для загрузки $url = file_get_contents("https://api.vk.com/method/photos.getWallUploadServer?album_id=".$album_id."&group_id=".$group_id."&v=".$v."&access_token=".$token); $url = json_decode($url)->response->upload_url; //// отправка post картинки $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); $r = curl_exec($ch); $result = json_decode($r,true); $ph = $result['photo']; //// сохраняем $params = array( 'access_token' => $token, 'album_id' =>$album_id, 'group_id' => $group_id, 'server' => $result['server'], 'photo' => $ph, 'hash' => $result['hash'], 'v' => $v, ); $safe = json_decode(file_get_contents('https://api.vk.com/method/photos.saveWallPhoto' . '?' .http_build_query($params)), true); $res_file[]=[ 'id' => $safe['response'][0]['id'], 'owner_id' => $safe['response'][0]['owner_id'], ]; $res_str .= 'photo'.$safe['response'][0]['owner_id'].'_'.$safe['response'][0]['id'].','; } } $query=file_get_contents("https://api.vk.com/method/wall.post?owner_id=-168148011&from_group=1&attachments=$res_str&message=".urlencode($message)."&access_token=".$token."&v=".$v); $query = json_decode($query); if($query->post_id){ return true; }else{ return false; } }