Я пытаюсь создать композитор post-install-cmd, который бы отправлял простой пост-запрос. Я использую этот простой блок в другом месте приложения, чтобы отправить тот же запрос на сервер разработки:
$ESmapping = file_get_contents('path/to/mapping.json');
/** @var GuzzleHttp\Message\Response $ESresponse */
$ESresponse = (new Guzzle())->post($ESmappingUrl, ["body" => $ESmapping]);
Этот точный код работает в консольной команде Symfony2, но когда я пытаюсь отправить этот запрос в команде композитора, происходит сбой со следующим:
PHP Fatal error: Call to undefined function GuzzleHttp\Stream\create() in /srv/www/htdocs/instagram-extractor/vendor/guzzlehttp/guzzle/src/Message/MessageFactory.php on line 179
Fatal error: Call to undefined function GuzzleHttp\Stream\create() in /srv/www/htdocs/instagram-extractor/vendor/guzzlehttp/guzzle/src/Message/MessageFactory.php on line 179
Я попытался создать поток заранее, используя $ stream = Stream :: factory (‘string data’);, но это не удалось с той же ошибкой (undefined Stream \ create ()), просто очевидно, с другим классом, вызывающим метод.
Я не нашел ни единой подсказки по этому вопросу, любая помощь будет оценена!
Спасибо!
Изменить: я подозревал, что это может быть проблема с автозагрузчиком, поэтому я попытался изменить psr-0 на psr-4, но безуспешно.
Выяснил, что Composer не загружает файл потоковых функций. Этот грязный хак работает вокруг этого:
require 'vendor/guzzlehttp/streams/src/functions.php';
Мне все еще интересно, есть ли лучшее решение для этого?
Других решений пока нет …