Некоторый контекст: У меня был сбой 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, когда пытаюсь создать APIcall.
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: список результатов
+--------+-----------+-----------------------------------------+-----------------------------------+---------------------------------------------------------------------------+--------------+
| 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>