Здравствуйте. Работаю с ларавел впервые как и в принципе с фреймворками, работал только на чистом php. Есть 2 сайта: site1.ru и site2.ru. Оба на ларе 7. Запускаю все на open server из под винды. По обращению к урлу второго сайта: site2.ru/products должен вернуться json со списком предложений (обычный массив с данными). В общем внешнее апи делаю. Все работает прекрасно, если открыть этот урл в браузере. Первый сайт (site1.ru) должен обратиться к этому урлу (site2.ru/products) и получить список предложений для дальнейшей работы. Использую для этого обертку лары над газл: PHP: $response = Http::get('http://site2.ru/products') И в ответ, вместо данных получаю ошибку со стороны второго сайта о том, что БД с таким то названием не найдена, что уже странно. Оказалось, что при обращении к сайту 2 из под сайта 1, на сайте 2 изменяются переменные .env. То есть сайт 2 каким-то образом использовал данные подключения к бд (и прочие параметры окружения) из env сайта 1. Чтобы убедится в этом, изменил значения APP_ENV для обоих сайтов: для первого "env-site1", для второго соответственно "env-site2". Далее при обращении к урлу site2.ru/products сделал возврат названия окружения: PHP: return App::environment(); Открыв ссылку через браузер получаю строку "env-site2", все правильно. А вот при обращении через http client сайта 1 получаю "env-site1", что не правильно. Как это так вообще? Извините заранее, если это какой-то глупый вопрос, раньше не работал с env никогда, и возможно это нормальная ситуация, но как это поправить и где про это прочитать. Пара часов гугления не помогли. Даже не знаю в чем именно дело, в open server или же необходимо какие-то параметры в http client лары дописывать, чтобы такого не было. В общем прошу помощи у знающих)
Чето какие то чудеса рассказываете. 99% веб сервер неверно настроен... на папку public соответствующего проекта надеюсь? Какой ноут для получения из апи? Надеюсь для Апи в роутах api.php прописывали? Кароче нужно больше информации, покажите роуты итд
Вот тож думаю, что в OpenServer дело, но хз в какую сторону копать, проблем с ним не возникало никогда. Папки public соответствуют сайтам нормально, там ведь админки свои и тд, не только апи. "Какой ноут для получения из апи" Стационарный комп. "Надеюсь для Апи в роутах api.php" Да. Провел тест с изменением APP_ENV и перенес маршрут в web.php - результат тот же "httpS" http api.php на сайте 2 Код (Text): <?php use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\App; Route::group(['prefix' => 'v1', 'as' => 'v1.'], function () { Route::get('get/products', function () { return App::environment(); }); }); TestController на сайте 1 Код (Text): <?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Http; class TestController extends Controller { public function t1() { return Http::get('http://site2.ru/get/products'); } }
не ноут писал, а роут ))) очепятка а что в /config/app.php ? 'env' => env('APP_ENV', 'production'), ? или как вы env задаете?
В config/app.php именно так, как вы указали. Я в принципе там изменял ток параметр "locale" и подключал провайдеры. Изменения для теста вносил напрямую в файл ,env. Оригинальное значение APP_ENV было "local". В целом изменений там так же не делал, кроме вписывания параметров подключения к mysql. П.С. поставил более старую версию OpenServer - проблема не решена, однако думаю дело все же в нем. Подозреваю, что на боевом хостинге проблемы не будет, но тем не менее)
Включение опции OpenServer "Защитить сервер от внешнего доступа" (Настройки -> Сервер) убрали проблему, однако заметно просела скорость загрузки страниц, в несколько раз минимум. Хоть какие-то подвижки, но решением проблемы это назвать сложно.
@MasterDmx Ну у вас же окончательно не будет проект работать на опен сервере. Большой проблемы не вижу