octobercms / october

Self-hosted CMS platform based on the Laravel PHP Framework.
https://octobercms.com/
Other
11.01k stars 2.21k forks source link

Error after update to 446 & clean install #4036

Closed re-sign closed 5 years ago

re-sign commented 5 years ago

october_install_bug

Please check install screen, Some error after update from 443 to 446 on another website. PHP 7.2.13+MariaDB-10.2.16+ubuntu16.04

october_update_error

re-sign commented 5 years ago

Downgrade to build 443. Is working correctly on these servers.

w20k commented 5 years ago

@re-sign, could you past the log as a text, and remove personal information? Couldn't reproduce, yet, with clean install.

LukeTowers commented 5 years ago

@re-sign did you add any plugins or themes with the installer?

re-sign commented 5 years ago

@w20k Unfortunately, there is no installation log, as I had to immediately return to the previous working version of the site. @LukeTowers No, the installation was clean from scratch.

LukeTowers commented 5 years ago

@re-sign please try it again and then zip up the results and add a link here. The issue is a dependency conflict between different versions of Laravel being used, which is usually the fault of a poorly configured plugin.

chrisvidal commented 5 years ago

Hi, I am having the same issue while updating from 443 to 446.

08-Jan-2019 08:30:51 UTC] PHP Fatal error:  Class Illuminate\Database\Eloquent\Collection contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Illuminate\Contracts\Queue\QueueableCollection::getQueueableRelations) in /Users/toto/Sites/oc-vodka/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Collection.php on line 11
[08-Jan-2019 08:30:51 UTC] PHP Fatal error:  Uncaught Error: Class 'October\Rain\Database\Collection' not found in /Users/toto/Sites/oc-vodka/vendor/october/rain/src/Database/Model.php:608
Stack trace:
#0 /Users/toto/Sites/oc-vodka/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(261): October\Rain\Database\Model->newCollection(Array)
#1 /Users/toto/Sites/oc-vodka/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1477): Illuminate\Database\Eloquent\Builder->hydrate(Array)
#2 /Users/toto/Sites/oc-vodka/vendor/october/rain/src/Extension/ExtendableTrait.php(411): Illuminate\Database\Eloquent\Model->__call('hydrate', Array)
#3 /Users/toto/Sites/oc-vodka/vendor/october/rain/src/Database/Model.php(635): October\Rain\Database\Model->extendableCall('hydrate', Array)
#4 /Users/toto/Sites/oc-vodka/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(481): October\Rain\Database\Model->__call('hydrate', Array)
#5 /Users/toto/Sites/oc- in /Users/toto/Sites/oc-vodka/vendor/october/rain/src/Database/Model.php on line 608
w20k commented 5 years ago

@chrisvidal, have you tried copy-past your plugins in the subdir and re-paste them one-by-one? Or is this the issue with the clean install?

chrisvidal commented 5 years ago

Issue is showing up after performing an upgrade on an existing project hence with existing plugins. Let me try to remove plugin by plugin to check that.

chrisvidal commented 5 years ago

Well, it seems that the issue is coming from one on my own developed plugins. Not sure what and why. After removing it from the plugins folder, OC is still in version 443 and the 'check for updates' buttons does not work anymore. EDIT: ok now I managed to upgrade to 446. Where should I look into my plugins code to debug this error?

chrisvidal commented 5 years ago

The plugin code providing the exception is only requiring an external vendor composer that is based on Laravel 5.5.

Is OC 446 still on Laravel 5.5 ?

w20k commented 5 years ago

OC only support LTS versions of Laravel.

chrisvidal commented 5 years ago

The vendor lib (gloudemans/shoppingcart) was working before with OC443 and not anymore with OC446

w20k commented 5 years ago

@chrisvidal, don't forget that Laravel framework do tend to remove/add methods as a fix within the PATCH version -> 5.6.x Can't say for sure which version did what, but you could look at the patch notes.

chrisvidal commented 5 years ago

thanks @w20k I am still confused, as in:

w20k commented 5 years ago

@chrisvidal,

Here you go latest 5.6.x added new method, which is not present in 5.5.x QueueableCollection.class: screenshot 2019-01-08 at 12 03 20

chrisvidal commented 5 years ago

ok thanks @w20k

so I don't understand why it does not work anymore and this exception is raised since nobody upgraded to Laravel 5.6.x

w20k commented 5 years ago

@chrisvidal, better to use 5.5.x Laravel with OC and you won't have such problems at all. By default set your vendor composer.json to use 5.5.x Laravel.

chrisvidal commented 5 years ago

I don't have any composer.json for Octobercms, it is installed with the wizard. in the vendor folder from OC, there is a Laravel folder, but I can't seem to find the Laravel version

w20k commented 5 years ago

@chrisvidal, how did you install/add - LaravelShoppingCart? Your issue is not with OctoberCMS, but the plugin that uses Laravel higher than 5.5.x.

See composer for LaravelShop which uses 5.1.x - 5.6.x https://github.com/Crinsane/LaravelShoppingcart/blob/master/composer.json -> should be only 5.5.x. If you have a root composer use it there (like plugins/author/name/composer.json).

chrisvidal commented 5 years ago

thanks @w20k for your help so basically I am screwed :) I can't modify their composer.json. So I had to go with a previous version 2.4 and it seems to be working. Still in test though

LukeTowers commented 5 years ago

@chrisvidal you should be able to use the replace property in your composer to specify illuminate/support 5.5: https://getcomposer.org/doc/04-schema.md#replace. This should lock their dependencies to 5.5 and prevent the unnecessary inclusion of the illuminate/support package within your plugin. This is the method used by the marketplace build server.

chrisvidal commented 5 years ago

Thanks @LukeTowers that is much cleaner way to proceed indeed. thanks, let me try this EDIT: it does the trick

{
    "require": {
        "gloudemans/shoppingcart": "^2.5"
    },
    "replace": {
        "illuminate/support": "5.5.x",
        "illuminate/session": "5.5.x",
        "illuminate/events": "5.5.x"
    }
}
pierzo commented 5 years ago

Downgrade to build 443. Is working correctly on these servers.

How to downgrade or fresh install of 443 version?

LukeTowers commented 5 years ago

@pierzo change your composer to use these:

"october/rain": "v1.0.443 as 1.0",
"october/system": "v1.0.443",
"october/backend": "v1.0.443",
"october/cms": "v1.0.443",
LukeTowers commented 5 years ago

Closing as it has been over a month since any activity on this occurred and we are trying to figure out what issues are still relevant. If this is still something that you would like to see through to fruition please respond and we can get the ball rolling.