vendredi 1 octobre 2021

Laravel 5.4 + WP fatal error on only some routes

I inherited a Laravel + Wordpress integrated website and had to migrate to a new server. The Wordpress website appears to work fine, and some Laravel routes work, but others do not.

For example, on the website homepage, we get the following error:

Call to a member function route() on string

in Kernel.php line 231
at Kernel->gatherRouteMiddleware()
in Kernel.php line 204
at Kernel->terminateMiddleware()
in Kernel.php line 189
at Kernel->terminate()
in index.php line 61

On other routes, such as /donor/ and /parent/, the browser simply redirects to the homepage.

Route::group(['namespace' => 'Donor', 'prefix' => 'donor'], function () {

    Route::group(['prefix' => 'application'], function () {
        Route::get('/', [
            'middleware' => ['guest'],
            'as'         => 'donor.initial-application',
            'uses'       => 'InitialApplicationController@showApplication',
        ]);
        Route::post('/', [
            'middleware' => ['guest'],
            'uses'       => 'InitialApplicationController@saveApplication',
        ]);
        Route::get('submitted', [
            'as'         => 'donor.submitted',
            'uses'       => 'InitialApplicationController@applicationSubmitted',
        ]);
        Route::get('rejected', [
            'as'         => 'donor.rejected',
            'uses'       => 'InitialApplicationController@applicationRejected',
        ]);
    });

    Route::group(['middleware' => 'auth.donor'], function () {
        Route::get('/', [
            'as'   => 'donor.dashboard',
            'uses' => 'DashboardController@dashboard',
        ]);
        Route::get('personal', [
            'as'   => 'donor.application.personal',
            'uses' => 'PersonalController@showForm',
        ]);
        
        .... etc ......


And on other routes, such as /account/ or /admin/ and its children, load without issue.

Route::group(['middleware' => 'auth', 'namespace' => 'Account', 'prefix' => 'account'], function () {
    Route::get('/', [
        'as'   => 'account',
        'uses' => 'ProfileController@profile',
    ]);
    Route::get('edit', [
        'middleware' => 'profile',
        'as'         => 'account.edit',
        'uses'       => 'ProfileController@edit',
    ]);
    Route::post('edit', [
        'middleware' => 'profile',
        'uses'       => 'ProfileController@update',
    ]);
    Route::get('password', [
        'as'   => 'account.password',
        'uses' => 'PasswordController@edit',
    ]);
    Route::post('password', [
        'uses' => 'PasswordController@update',
    ]);

});

I have tried running commands: php artisan optimize php artisan cache:clear php artisan route:clear and did not resolve the issue.

Laravel resides in /

Wordpress index and config resides in /public/

Wordpress core resides in /public/wp/

Another interesting note, at first Wordpress was encountering an endless redirect loop. I was able to fix that by commenting out the following lines in .htaccess:

    # Redirect Trailing Slashes If Not A Folder...
    #RewriteCond %{REQUEST_FILENAME} !-d
    #RewriteRule ^(.*)/$ /$1 [L,R=301]

I've tried reverting this and it does not seem to affect my problem above. Not experienced in Laravel so I am unsure what else to try.



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire