์๋ค์ํผ symfony/http-client ๋ ๋ง์ ํจํค์ง์ ํ์ํ์ง๋ง ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ http/guzzle6-adapter๋ฅผ ์ค์นํ ๊ฒ๋ณด๋ค meilisearch๋ฅผ ํ ์คํธํ๊ธฐ ์ํด ์ ๊ฑฐํ์ผ๋ฉฐ ์ ๊ฑฐํ ํจํค์ง๋ฅผ ์ค์นํ ๊ฒ๋ณด๋ค ๋ชจ๋ ๊ฒ์ด ์ ๋๋ก ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ค์ symfony/http-client๋ฅผ ์ค์นํ์ผ๋ฉฐ laravel์ด ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ๋ค๊ณ ์๊ฐํ๊ณ ์ด ์ค๋ฅ๊ฐ ๋ค์ ๋ฐ์ํฉ๋๋ค. ๋ํ readme์์ ์ ์ํ ๋๋ก symfony/http-client nyholm/psr7 ์ ์ค์นํ๋ ค๊ณ ์๋ํ์ง๋ง ์ฌ์ ํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด์ ๋ํ ํด๊ฒฐ์ฑ ์ ๋ฌด์์ด๋ผ๊ณ ์๊ฐํ์ญ๋๊น?
๋ํ guzzle์ 7.0์ผ๋ก ์ ๋ฐ์ดํธํ๋ ค๊ณ ์๋ํ์ง๋ง ์ฌ์ ํ ์์๋๋ก ์๋ํ์ง ์์ต๋๋ค. php ๋ฒ์ ์ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทํ์ ์๋ฃจ์ ์ ๋ฌด์์ ๋๊น?
์ฌ์ฉ:
๋ผ๋ผ๋ฒจ: 6.18.40
PHP: 7.4.5
symfony/http-client๋ฅผ ์ฌ์ฉํ์ฌ mailisearch์ ๋ํ ๋ชจ๋ ์์ฒญ์ ๋ค์ ์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค.
ErrorException : Trying to access array offset on value of type null
at /var/www/vendor/symfony/http-client/HttpClientTrait.php:417
413| $url['query'] = '?'.self::mergeQueryString(substr($url['query'] ?? '', 1), $queryDefaults, false);
414| }
415| }
416|
> 417| $url['scheme'] = $base['scheme'];
418| }
419|
420| if ('' === ($url['path'] ?? '')) {
421| $url['path'] = '/';
Exception trace:
1 Illuminate\Foundation\Bootstrap\HandleExceptions::handleError()
/var/www/vendor/symfony/http-client/HttpClientTrait.php:417
2 Symfony\Component\HttpClient\CurlHttpClient::resolveUrl()
/var/www/vendor/symfony/http-client/HttpClientTrait.php:141
symfony/http-client
์ ํจ๊ป nyholm/psr7
symfony/http-client
๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๋ผ๋ผ๋ฒจ 6.18.40 ๋ฐ PHP 7.4.3
์ฌ์ฉํ์ญ์์ค "meilisearch/meilisearch-laravel-scout": "^0.12.0"
๋น์ ์ composer.json
@shokme ํผ๋๋ฐฑ์ ๊ฐ์ฌํ์ง๋ง "meilisearch/meilisearch-laravel-scout": "^0.12.0"
"symfony/http-client": "^5.1"
๊ทธ๋ฆฌ๊ณ
"nyholm/psr7": "^1.3"
๊ฐ์ ๋ฒ์ ์ด ์์ต๋๊น?
์, ๋ชจ๋ ๊ฒ์ด ๋์ผํฉ๋๋ค.
ํ์ง๋ง ๋ ์์ฃผ ๊ฐ๋จํ ์ ํ๋ฅผ
$movies = Movie::search('Ready Player One')->raw();
๊ทธ๋ฌ๋ ๋น์ ์ด ๋งํ๋ฏ์ด :
symfony/http-client๋ฅผ ์ฌ์ฉํ์ฌ mailisearch์ ๋ํ ๋ชจ๋ ์์ฒญ์ ๋ค์ ์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค.
๊ทธ๋์ ๋๋ ์ค๋ฅ๊ฐ ๋น์ ์ ์ ํ์์ ๋น๋กฏ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
@shokme ๋ค ๋ง์ต๋๋ค. ์ ํ์ ๊ดํ ๊ฒ์ด ์๋๋ผ ๋ด ํ๋ก์ ํธ์์ ์ฌ๋ฌ ์กฐํฉ์ ์๋ํ๊ธฐ ๋๋ฌธ์ ์ด๋ํฐ๊ฐ ์๋ guzzle 6์ด ์ ์๋ํฉ๋๋ค. ์ผ๋ถ ํจํค์ง๋ฅผ ์ง์ด ํ guzzle 7์ด ์ ์ฒด ๊ตฌ์ฑ ๋ฐ mailisearch์์ ์ ๋๋ก ์๋ํ๊ธฐ ์์ํ์ง๋ง symfony/http-client๋ ์ฌ์ ํ ๋์๊ฒ ๋ฌธ์ ๊ฐ ๋จ์ ์์ต๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ผ๋ฉด ์ ์ด ๋ณด๊ฒ ์ต๋๋ค. ์๊ฐ ๋ด ์ค์ ๊ณ ๋ง์.
์๊ฒ ์ต๋๋ค. ๋ ์ด์ ๋์์ ๋๋ฆฌ์ง ๋ชปํด ์ฃ์กํฉ๋๋ค.
์๋ง๋ ์ด๋ค ์ผ์ dd($url)
์ฝ symfony/http-client/HttpClientTrait.php:417
๋น์ ์๊ฒ ๋ช ๊ฐ์ง ํํธ๋ฅผ ํ์ ํ ์ ์์ต๋๋ค.
@shokme ์ฌ์ ํ ์๊ฐ๊ณผ ๋์์ ๋ํด ๋ง์ ๊ฐ์ฌ๋ฅผ ๋๋ฆฝ๋๋ค. ์ฐ๋ฆฌ ๋ ๋ค ๊ฐ์ง๊ณ ์๋ ๋์ผํ ๊ตฌ์ฑ์ ์ ๊ฐ ๋ญ๊ฐ ์๋ชป ์๊ณ ์๋ค๋ ํฌ๋ง์ ์ฃผ๋ฏ๋ก ๋ค์ ์กฐ์ฌ๋ฅผ ๊ณ์ํ๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
@shokme ๊ทธ๋์ ๋ด ๋ฌธ์ ๊ฐ ๋์ปค ๊ตฌ์ฑ ๋ฐ ํ๊ฒฝ ๋ณ์์ ์๋ค๋ ๊ฒ์ ์์์ต๋๋ค. ๋ด ํ๊ฒฝ์ guzzle 6,7
๋ฐ php-http/curl-client
์ ์๋ฒฝํ๊ฒ ์๋ํ๋ MEILISEARCH_HOST=meilisearch
๊ฐ ์์๋๋ฐ, symfony/http-client
๋ง ์ถฉ๋ํ์ ๋ ์ ๋ฅผ ๋ฏธ์น๊ฒ ๋ง๋ค์์ต๋๋ค. ๊ทธ๋์ vendor/symfony/http-client/HttpClientTrait.php
์์ค๋ฅผ ํ์ธํ๊ณ "์ ์ ํ" URL ์ด๋ฆ ์์ด resolveUrl()
๊ฐ ์ถฉ๋ํ๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ฌ MEILISEARCH_HOST=meilisearch
๋ฅผ MEILISEARCH_HOST=http://meilisearch:7070
ํ์ต๋๋ค. ํจ๊ณผ๊ฐ์๋ค. ๋ค์ ํ ๋ฒ meilisearch๋ฅผ ์ ์งํ๊ณ ๋ฌธ์ ๋ฅผ ๋ง๋ฌด๋ฆฌํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค.
@JexPY๋ฅผ ์กฐ์ฌํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ํ๋ก์ฐ ํด์ฃผ์๋ ์ ์ ๋ถ๋ค์๊ฒ ๋ง์ ๋์์ด ๋ ๊ฒ ๊ฐ์์๐
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@shokme ๊ทธ๋์ ๋ด ๋ฌธ์ ๊ฐ ๋์ปค ๊ตฌ์ฑ ๋ฐ ํ๊ฒฝ ๋ณ์์ ์๋ค๋ ๊ฒ์ ์์์ต๋๋ค. ๋ด ํ๊ฒฝ์
guzzle 6,7
๋ฐphp-http/curl-client
์ ์๋ฒฝํ๊ฒ ์๋ํ๋MEILISEARCH_HOST=meilisearch
๊ฐ ์์๋๋ฐ,symfony/http-client
๋ง ์ถฉ๋ํ์ ๋ ์ ๋ฅผ ๋ฏธ์น๊ฒ ๋ง๋ค์์ต๋๋ค. ๊ทธ๋์vendor/symfony/http-client/HttpClientTrait.php
์์ค๋ฅผ ํ์ธํ๊ณ "์ ์ ํ" URL ์ด๋ฆ ์์ดresolveUrl()
๊ฐ ์ถฉ๋ํ๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ฌMEILISEARCH_HOST=meilisearch
๋ฅผMEILISEARCH_HOST=http://meilisearch:7070
ํ์ต๋๋ค. ํจ๊ณผ๊ฐ์๋ค. ๋ค์ ํ ๋ฒ meilisearch๋ฅผ ์ ์งํ๊ณ ๋ฌธ์ ๋ฅผ ๋ง๋ฌด๋ฆฌํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.