За последние 24 часа нас посетили 22120 программистов и 1153 робота. Сейчас ищут 364 программиста ...

.env и api между двумя ларавел проектами

Тема в разделе "Laravel", создана пользователем MasterDmx, 23 авг 2020.

  1. MasterDmx

    MasterDmx Активный пользователь

    С нами с:
    17 авг 2014
    Сообщения:
    31
    Симпатии:
    0
    Здравствуйте. Работаю с ларавел впервые как и в принципе с фреймворками, работал только на чистом php.

    Есть 2 сайта: site1.ru и site2.ru. Оба на ларе 7. Запускаю все на open server из под винды.

    По обращению к урлу второго сайта: site2.ru/products должен вернуться json со списком предложений (обычный массив с данными). В общем внешнее апи делаю. Все работает прекрасно, если открыть этот урл в браузере.

    Первый сайт (site1.ru) должен обратиться к этому урлу (site2.ru/products) и получить список предложений для дальнейшей работы. Использую для этого обертку лары над газл:

    PHP:
    1. $response = Http::get('http://site2.ru/products')
    И в ответ, вместо данных получаю ошибку со стороны второго сайта о том, что БД с таким то названием не найдена, что уже странно. Оказалось, что при обращении к сайту 2 из под сайта 1, на сайте 2 изменяются переменные .env. То есть сайт 2 каким-то образом использовал данные подключения к бд (и прочие параметры окружения) из env сайта 1.

    Чтобы убедится в этом, изменил значения APP_ENV для обоих сайтов: для первого "env-site1", для второго соответственно "env-site2". Далее при обращении к урлу site2.ru/products сделал возврат названия окружения:

    PHP:
    1. return App::environment();
    Открыв ссылку через браузер получаю строку "env-site2", все правильно. А вот при обращении через http client сайта 1 получаю "env-site1", что не правильно.

    Как это так вообще? Извините заранее, если это какой-то глупый вопрос, раньше не работал с env никогда, и возможно это нормальная ситуация, но как это поправить и где про это прочитать. Пара часов гугления не помогли. Даже не знаю в чем именно дело, в open server или же необходимо какие-то параметры в http client лары дописывать, чтобы такого не было.

    В общем прошу помощи у знающих)
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.823
    Симпатии:
    736
    Адрес:
    Татарстан
    Чето какие то чудеса рассказываете.
    99% веб сервер неверно настроен... на папку public соответствующего проекта надеюсь?

    Какой ноут для получения из апи? Надеюсь для Апи в роутах api.php прописывали?

    Кароче нужно больше информации, покажите роуты итд
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.750
    Симпатии:
    1.322
    Адрес:
    Лень
  4. MasterDmx

    MasterDmx Активный пользователь

    С нами с:
    17 авг 2014
    Сообщения:
    31
    Симпатии:
    0
    Вот тож думаю, что в OpenServer дело, но хз в какую сторону копать, проблем с ним не возникало никогда.

    Папки public соответствуют сайтам нормально, там ведь админки свои и тд, не только апи.

    "Какой ноут для получения из апи"
    Стационарный комп.

    "Надеюсь для Апи в роутах api.php"
    Да. Провел тест с изменением APP_ENV и перенес маршрут в web.php - результат тот же

    "httpS"
    http

    api.php на сайте 2

    Код (Text):
    1. <?php
    2.  
    3. use Illuminate\Support\Facades\Route;
    4. use Illuminate\Support\Facades\App;
    5.  
    6. Route::group(['prefix' => 'v1', 'as' => 'v1.'], function () {
    7.     Route::get('get/products', function () {
    8.         return App::environment();
    9.     });
    10. });
    TestController на сайте 1

    Код (Text):
    1. <?php
    2.  
    3. namespace App\Http\Controllers;
    4.  
    5. use Illuminate\Support\Facades\Http;
    6.  
    7. class TestController extends Controller
    8. {
    9.     public function t1()
    10.     {
    11.         return Http::get('http://site2.ru/get/products');
    12.     }
    13. }
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.823
    Симпатии:
    736
    Адрес:
    Татарстан
    не ноут писал, а роут ))) очепятка

    а что в /config/app.php ?
    'env' => env('APP_ENV', 'production'), ?
    или как вы env задаете?
     
  6. MasterDmx

    MasterDmx Активный пользователь

    С нами с:
    17 авг 2014
    Сообщения:
    31
    Симпатии:
    0
    В config/app.php именно так, как вы указали. Я в принципе там изменял ток параметр "locale" и подключал провайдеры.

    Изменения для теста вносил напрямую в файл ,env. Оригинальное значение APP_ENV было "local". В целом изменений там так же не делал, кроме вписывания параметров подключения к mysql.

    П.С. поставил более старую версию OpenServer - проблема не решена, однако думаю дело все же в нем. Подозреваю, что на боевом хостинге проблемы не будет, но тем не менее)
     
  7. MasterDmx

    MasterDmx Активный пользователь

    С нами с:
    17 авг 2014
    Сообщения:
    31
    Симпатии:
    0
    Включение опции OpenServer "Защитить сервер от внешнего доступа" (Настройки -> Сервер) убрали проблему, однако заметно просела скорость загрузки страниц, в несколько раз минимум. Хоть какие-то подвижки, но решением проблемы это назвать сложно.
     
    #7 MasterDmx, 24 авг 2020
    Последнее редактирование: 24 авг 2020
  8. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    @MasterDmx Ну у вас же окончательно не будет проект работать на опен сервере. Большой проблемы не вижу
     
  9. MasterDmx

    MasterDmx Активный пользователь

    С нами с:
    17 авг 2014
    Сообщения:
    31
    Симпатии:
    0
    Ваша правда, но это снизит скорость разработки