@EvgMul

Можно ли в PHP получить массив открытых файлов?

Здравствуйте. У меня проблема следующая.
Использую API Facebook, загружаю картинку методом fileToUpload($linkToFile), вобще этот метод должен закрывать файл после загрузки, но почему-то когда я пытаюсь использовать далее unlink($linkToFile) этого файла вываливается ошибка permission denied. Ошибка вываливается только если я использую этот метод.
Метод не возвращает ресурс файла, поэтому я не могу его закрыть.
Возможно ли как-то получить все-таки ресурс этого файла, закрыть его, а после удалить?
Заранее благодарен всем отозвавшимся.

private function grabImage($url,$saveto) {
	    $ch = curl_init ($url);
	    curl_setopt($ch, CURLOPT_HEADER, 0);
	    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	    curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
	    $raw = curl_exec($ch);
	    curl_close ($ch);
	    if(file_exists($saveto)){
	        unlink($saveto);
	    }
	    $fp = fopen($saveto,'w+');
	    fwrite($fp, $raw);
	    fclose($fp);
	}

public function addPostFB($post) {
		$fb = $this->fb;

		//Загружаем требуемое изображение к себе на сервер
		$remoteFile = $post['image'];
		$nameFile = explode('/', $remoteFile);
		$localFile = __DIR__."/images/".array_pop($nameFile);
		$this->grabImage($remoteFile, $localFile);

		$fb->setDefaultAccessToken(TOKEN_FB);

		$file = $fb->fileToUpload($localFile);

		$data = [
		    'message' => $post['text'],
		    'source' => $file,
		];
		$batch = [
		    'photo' => $fb->request('POST', "/".ID_PUBLIC_FB."/photos", $data),
		];
		$responses = $fb->sendBatchRequest($batch);

		unlink($localFile);

	}
  • Вопрос задан
  • 168 просмотров
Решения вопроса 1
@EvgMul Автор вопроса
Проблема заключалась в том, что метод fileToUpload($localFile);
Все-таки не закрывал файл, но есть функция close();
которая его закрыла :).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Попробуйте unset($data); перед удалением файла.
Ну или не грузите картинку себе, а сразу отдавайте URL
$data = [
  'message' => $post['text'],
  'url' => $post['image'],
];
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы