Nano Hash - криптовалюты, майнинг, программирование

API Laravel перестал отвечать. Как вернуться на службу?

Некоторый контекст: у меня произошел сбой HD, и мне пришлось удалить дополнительный диск и установить его в новую систему, чтобы снова получить доступ к моему проекту. После получения доступа мне пришлось заново настраивать свою среду. Я использую Windows 10 WSL Ubuntu с Apache2. Я считаю, что правильно перестроил права доступа ко всем папкам и файлам и теперь могу запускать свой Laravel API.

sudo chown -R www-data:www-data /path/to/your/laravel/root/directory
sudo usermod -a -G www-data ubuntu
sudo find /path/to/your/laravel/root/directory -type f -exec chmod 644 {} \;  
sudo find /path/to/your/laravel/root/directory -type d -exec chmod 755 {} \;
sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache

Единственная загвоздка в том, что ни один из моих вызовов API больше не работает. Я получаю сообщение 404. единственный работающий маршрут — индексный маршрут.

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

php artisan cache:clear
php artisan route:cache  
php artisan config:clear 
php artisan view:clear 

Я даже не могу заставить его вернуть простое тестовое сообщение с закрытием тестового API.

<?php

use Illuminate\Http\Request;

/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/

    Route::group(['prefix' => '/auth', ['middleware' => 'throttle:20,5']], function () {
        Route::post('/register', 'API\AuthController@register')->name('api.register');
        Route::post('/login', 'API\AuthController@login')->name('api.login');
    });

    // Route::get('/test',function(){
    //     return "Test api";
    // });

    Route::group(['middleware' => ['auth:api']], function () {

        Route::apiResources([
            'user' => 'API\UserController',
            'role' => 'API\RoleController',
            'user-role' => 'API\UserRoleController',
        ]);

        Route::post('auth/logout', 'API\AuthController@logout')->name('api.logout');
        Route::get('profile', 'API\UserController@profile')->name('api.profile');
        Route::put('profile', 'API\UserController@updateProfile')->name('api.profile.update');
    });

php artisan route:list results

+--------+-----------+-----------------------------------------+-----------------------------------+---------------------------------------------------------------------------+--------------+
| Domain | Method    | URI                                     | Name                              | Action                                                                    | Middleware   |
+--------+-----------+-----------------------------------------+-----------------------------------+---------------------------------------------------------------------------+--------------+
|        | GET|HEAD  | /                                       | home                              | App\Http\Controllers\HomeController@index                                 | web          |
|        | POST      | api/auth/login                          | api.login                         | App\Http\Controllers\API\AuthController@login                             | api          |
|        | POST      | api/auth/logout                         | api.logout                        | App\Http\Controllers\API\AuthController@logout                            | api,auth:api |
|        | POST      | api/auth/register                       | api.register                      | App\Http\Controllers\API\AuthController@register                          | api          |
|        | PUT       | api/profile                             | api.profile.update                | App\Http\Controllers\API\UserController@updateProfile                     | api,auth:api |
|        | GET|HEAD  | api/profile                             | api.profile                       | App\Http\Controllers\API\UserController@profile                           | api,auth:api |
|        | POST      | api/role                                | role.store                        | App\Http\Controllers\API\RoleController@store                             | api,auth:api |
|        | GET|HEAD  | api/role                                | role.index                        | App\Http\Controllers\API\RoleController@index                             | api,auth:api |
|        | DELETE    | api/role/{role}                         | role.destroy                      | App\Http\Controllers\API\RoleController@destroy                           | api,auth:api |
|        | PUT|PATCH | api/role/{role}                         | role.update                       | App\Http\Controllers\API\RoleController@update                            | api,auth:api |
|        | GET|HEAD  | api/role/{role}                         | role.show                         | App\Http\Controllers\API\RoleController@show                              | api,auth:api |
|        | GET|HEAD  | api/user                                | user.index                        | App\Http\Controllers\API\UserController@index                             | api,auth:api |
|        | POST      | api/user                                | user.store                        | App\Http\Controllers\API\UserController@store                             | api,auth:api |
|        | POST      | api/user-role                           | user-role.store                   | App\Http\Controllers\API\UserRoleController@store                         | api,auth:api |
|        | GET|HEAD  | api/user-role                           | user-role.index                   | App\Http\Controllers\API\UserRoleController@index                         | api,auth:api |
|        | DELETE    | api/user-role/{user_role}               | user-role.destroy                 | App\Http\Controllers\API\UserRoleController@destroy                       | api,auth:api |
|        | PUT|PATCH | api/user-role/{user_role}               | user-role.update                  | App\Http\Controllers\API\UserRoleController@update                        | api,auth:api |
|        | GET|HEAD  | api/user-role/{user_role}               | user-role.show                    | App\Http\Controllers\API\UserRoleController@show                          | api,auth:api |
|        | GET|HEAD  | api/user/{user}                         | user.show                         | App\Http\Controllers\API\UserController@show                              | api,auth:api |
|        | PUT|PATCH | api/user/{user}                         | user.update                       | App\Http\Controllers\API\UserController@update                            | api,auth:api |
|        | DELETE    | api/user/{user}                         | user.destroy                      | App\Http\Controllers\API\UserController@destroy                           | api,auth:api |
|        | GET|HEAD  | oauth/authorize                         | passport.authorizations.authorize | Laravel\Passport\Http\Controllers\AuthorizationController@authorize       | web,auth     |
|        | DELETE    | oauth/authorize                         | passport.authorizations.deny      | Laravel\Passport\Http\Controllers\DenyAuthorizationController@deny        | web,auth     |
|        | POST      | oauth/authorize                         | passport.authorizations.approve   | Laravel\Passport\Http\Controllers\ApproveAuthorizationController@approve  | web,auth     |
|        | GET|HEAD  | oauth/clients                           | passport.clients.index            | Laravel\Passport\Http\Controllers\ClientController@forUser                | web,auth     |
|        | POST      | oauth/clients                           | passport.clients.store            | Laravel\Passport\Http\Controllers\ClientController@store                  | web,auth     |
|        | PUT       | oauth/clients/{client_id}               | passport.clients.update           | Laravel\Passport\Http\Controllers\ClientController@update                 | web,auth     |
|        | DELETE    | oauth/clients/{client_id}               | passport.clients.destroy          | Laravel\Passport\Http\Controllers\ClientController@destroy                | web,auth     |
|        | GET|HEAD  | oauth/personal-access-tokens            | passport.personal.tokens.index    | Laravel\Passport\Http\Controllers\PersonalAccessTokenController@forUser   | web,auth     |
|        | POST      | oauth/personal-access-tokens            | passport.personal.tokens.store    | Laravel\Passport\Http\Controllers\PersonalAccessTokenController@store     | web,auth     |
|        | DELETE    | oauth/personal-access-tokens/{token_id} | passport.personal.tokens.destroy  | Laravel\Passport\Http\Controllers\PersonalAccessTokenController@destroy   | web,auth     |
|        | GET|HEAD  | oauth/scopes                            | passport.scopes.index             | Laravel\Passport\Http\Controllers\ScopeController@all                     | web,auth     |
|        | POST      | oauth/token                             | passport.token                    | Laravel\Passport\Http\Controllers\AccessTokenController@issueToken        | throttle     |
|        | POST      | oauth/token/refresh                     | passport.token.refresh            | Laravel\Passport\Http\Controllers\TransientTokenController@refresh        | web,auth     |
|        | GET|HEAD  | oauth/tokens                            | passport.tokens.index             | Laravel\Passport\Http\Controllers\AuthorizedAccessTokenController@forUser | web,auth     |
|        | DELETE    | oauth/tokens/{token_id}                 | passport.tokens.destroy           | Laravel\Passport\Http\Controllers\AuthorizedAccessTokenController@destroy | web,auth     |
+--------+-----------+-----------------------------------------+-----------------------------------+---------------------------------------------------------------------------+--------------+

Очевидно, я должен что-то упустить, но я не смог понять, что. Было бы полезно, если бы у кого-нибудь были идеи о том, как я могу это исправить и избавить меня от необходимости перестраивать весь мой проект.

Спасибо.

Обновить

Как спросил другой пользователь, это то, что установлено в моем apache2.config.

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

  • mod_rewrite работает правильно? разрешить переопределение 08.10.2019
  • как я могу это проверить? 08.10.2019
  • Я убедился, что в Apache2 установлено следующее: ‹Каталог /var/www/› Параметры Индексы FollowSymLinks AllowOverride All Требовать все предоставлено ‹/Directory› 08.10.2019
  • Конфигурация apache для этого сайта блок каталогов AllowOverride all я думаю 08.10.2019
  • да, я сделал это в конфигурации apache 08.10.2019
  • может быть, мне нужно что-то сделать в .htaccess в корне laravel? 08.10.2019

Ответы:


1

После того, как последний пользователь опубликовал информацию о моей конфигурации apache, я решил посмотреть доступные на сайте конфигурации apache.

 sudo nano /etc/apache2/sites-available/000-default.conf

Я изменил AllowOverride на all, и теперь вызовы API работают.

<Directory  /mnt/d/Dropbox/www/html/public/>
        Options Indexes FollowSymLinks
        AllowOverride all
        Require all granted
</Directory>

Спасибо @lagbox за то, что привели меня к решению.

08.10.2019
Новые материалы

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

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..