Laravel 8 – проблема с развертыванием API на работающем сервереPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Гость
 Laravel 8 – проблема с развертыванием API на работающем сервере

Сообщение Гость »


Я новичок в Laravel, и этот пост в основном предназначен для учебных целей, поэтому не обращайте внимания на элементарный подход, архитектуру и метод развертывания, которые я здесь использую. Кроме того, я впервые пытаюсь развернуть проект Laravel на работающем сервере.

Проблема: Я переписываю собственную CMS, которую я создал с нуля, на основе других языков, таких как .NET/node/react/vanilla PHP, в Laravel.

Фронтэнд и бэкэнд используют в основном одни и те же исходные файлы, за исключением файлов .env. Архитектура была настроена так, чтобы внешний интерфейс получал данные из внутреннего API.
[*]Временный домен внешнего интерфейса: http://multiplatformphplaravel8v1-syncs ... ector.net/ (локальная версия: http://localhost:8000) [*]Временный домен серверной части: http://backendphplaravel8v1-syncsystem- ... ector.net/ (локальная версия: http://localhost:8001) (не обязательно их посещать – просто дополнительная информация)
Полную базу кода можно найти здесь: https://github.com/jorge-mauricio/laravel8

До сих пор я занимался разработкой локально, и все работало нормально. Однако когда я развернул свой код на действующих серверах, происходит очень странное поведение:
[*]Фронтенд загружается нормально (веб-маршруты) – это говорит о том, что настройки развертывания в порядке; [*]Кажется, что серверные API возвращают ноль, когда я пытаюсь получить их через интерфейс. Пример:
$apiAuthenticationCheckURL = 'http://backendphplaravel8v1-syncsystem- ... ntication/'; $apiAuthenticationCheckResponse = Http::withOptions(['verify' => false]) ->пост( $apiAuthenticationCheckURL, array_merge( [ 'verificationType' => 'user_admin', 'apiKey' => config('app.gSystemConfig.configAPIKeySystem'), ], $req->все() ) ); $arrAuthenticationCheckJson = $apiAuthenticationCheckResponse->json(); Ссылка на код GitHub: https://github.com/jorge-mauricio/larav ... p#L97-L110

$apiAuthenticationCheckResponse возвращает значение null, когда я dd($apiAuthenticationCheckResponse) в строке после, и он должен возвращать данные. Я уже отладил $apiAuthenticationCheckURL, и он печатает правильный маршрут API.

А теперь самое странное: когда я тестирую маршрут API в своем почтальоне (на том же компьютере, на котором я разрабатывал и локально тестировал весь свой код), он возвращает мне ожидаемый ответ.
Изображение


И ответ точно такой же, как и при использовании локальной конечной точки разработки (http://localhost:8001)

Еще одно странное поведение заключается в том, что я могу утверждать, что маршруты API работают нормально через эту открытую конечную точку API: http://backendphplaravel8v1-syncsystem- ... tegories/0 Возможно, это связано с какой-то дополнительной конфигурацией, связанной с методом Http::withOptions.

Поэтому я предполагаю, что мне следует включить IP-адрес или домен моего внешнего сервера где-то в Laravel, но я понятия не имею, где это может быть.

Кроме того, прежде чем кто-либо укажет на это, промежуточное программное обеспечение TrustedHosts все еще отключено: https://github.com/jorge-mauricio/larav ... el.php#L19

Полный контекст:
[*]Ларавель 8; [*]Оригинальный файл .htaccess Laravel 8 в обеих общедоступных папках; [*]Учетные записи общего хостинга, поэтому существуют ограничения командной строки и т. д.; [*]Серверы PHP 8.0.30;
Изображение

Метод развертывания: Опять же – очень элементарно, пока я не пойму, что происходит.
[*]Я создал две отдельные учетные записи (с разными IP-адресами) на общем хостинге; [*]Я загрузил файлы через FTP (включая зависимости), поэтому ни для чего не запускал команды композитора или php artisan; [*]Я только что отредактировал файл public/index.php, чтобы указать правильные пути импорта и небольшие различия в файлах .env, чтобы указать на конечные точки реального производства;
Примечание о святилище: В проекте используется святилище для некоторой логики аутентификации, но я не думаю, что это пока проблема. В любом случае, я обновил эту строку, включив в нее IP-адреса всех моих действующих серверов: https://github.com/jorge-mauricio/larav ... um.php#L20

'stateful' => взрыв(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( '%SS', 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1, 192.96.210.51,192.96.210.51:34512,мультиплатформенныйphplaravel8v1-syncsystem-com-br.apache4.cloudsector.net, 192.96.210.16,backendphplaravel8v1-syncsystem-com-br.apache2.cloudsector.net', Санктум::currentApplicationUrlWithPort() ))), Я по-прежнему думаю, что ключевым моментом здесь будет доступ к конечной точке API с компьютера, на котором я разработал проект Laravel (включая ремесленные команды), а не доступ к конечным точкам API через сервер (интерфейс).

Если бы у меня была возможность настроить вручную то, что мне нужно было сделать через командную строку, было бы здорово, поскольку я чувствую, что очень близок к завершению этого этапа процесса обучения.

Или, если кто-нибудь скажет, есть ли какой-то шаг, который я упускаю при развертывании проектов Laravel на действующих серверах, я буду очень признателен.

Спасибо!

Изменить: прогресс в отладке и обнаружена основная причина:

Возможно, я нашел причину проблемы, но все еще ищу ее решение. Покопавшись еще немного, я нашел эту статью в Laracast и, похоже, проблема связана с косой чертой в конце URI.

Изначально URI, который я настраиваю, выглядел так: http://backendphplaravel8v1-syncsystem- ... ntication/

Если я удалю завершающую косую черту, я смогу получить данные через Http::withOptions: http://backendphplaravel8v1-syncsystem- ... entication

Проблема отладки заключалась в том, что локально она работала с косой чертой в конце (ремесленный сервер), поэтому это может быть связано с сервером Apache или общедоступным .htaccess.

Кроме того, маршрут API, который я установил, имеет косую черту в конце, поэтому я не совсем понимаю, почему возникает ошибка:

Route::post( '/аутентификация/', [ ApiAuthenticationController::class, 'authenticationCheck' ], функция ($authenticationCheckResults) { вернуть ответ()->json($authenticationCheckResults); } ) -> имя (api.authentication); https://github.com/jorge-mauricio/larav ... on.php#L12

Я хотел бы сохранить косую черту в конце сборки URI. Что мне нужно сделать, чтобы все работало как есть? Будет ли в Laravel конфигурация, которую я могу установить, или в конфигурации маршрута API, или мне следует обрабатывать ее на уровне файла .htacess?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»