Unable to save drafts #395

Closed
opened 2026-02-04 19:24:40 +03:00 by OVERLORD · 9 comments
Owner

Originally created by @0Styless on GitHub (Aug 5, 2017).

For Bug Reports

  • BookStack Version: v0.17.4
  • PHP Version: 7.0.18-0ubuntu0.16.04.1
  • MySQL Version: 5.7.19-0ubuntu0.16.04.1

Expected Behavior
Automatic saving of drafts while editing a page.

Actual Behavior
Unable to save drafts:
image

Originally created by @0Styless on GitHub (Aug 5, 2017). # **For Bug Reports** * BookStack Version: v0.17.4 * PHP Version: 7.0.18-0ubuntu0.16.04.1 * MySQL Version: 5.7.19-0ubuntu0.16.04.1 **Expected Behavior** Automatic saving of drafts while editing a page. **Actual Behavior** Unable to save drafts: ![image](https://user-images.githubusercontent.com/30753608/28996599-481a8ace-7a04-11e7-961c-457e76b940c9.png)
OVERLORD added the 🐕 Support label 2026-02-04 19:24:40 +03:00
Author
Owner

@ssddanbrown commented on GitHub (Aug 6, 2017):

Hi @0Styless,
Do any other parts of your BookStack install function incorrectly?

This message should only really show if the draft save request completely fails (Designed in the event you go offline when editing a page).

Unfortunately this is a little more difficult to debug.

Does anything show in the log file when this occurs? Details of viewing the log can be found here.

@ssddanbrown commented on GitHub (Aug 6, 2017): Hi @0Styless, Do any other parts of your BookStack install function incorrectly? This message should only really show if the draft save request completely fails (Designed in the event you go offline when editing a page). Unfortunately this is a little more difficult to debug. Does anything show in the log file when this occurs? Details of viewing the log [can be found here](https://www.bookstackapp.com/docs/admin/debugging/).
Author
Owner

@0Styless commented on GitHub (Aug 6, 2017):

Hello @ssddanbrown
Anything else works fine for me.
I can assure you that during the editing was no connection problem.

This is the output of the logfile (storage/logs/laravel.log) when the error occurs (debugging turnt on):

[2017-08-06 13:23:44] production.ERROR: Illuminate\Session\TokenMismatchException in /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php:68 Stack trace: #0 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure)) #1 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #2 /var/www/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #3 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure)) #4 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #5 /var/www/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(59): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #6 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure)) #7 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #8 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #9 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(561): Illuminate\Pipeline\Pipeline->then(Object(Closure)) #10 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(520): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request)) #11 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(498): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request)) #12 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(174): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request)) #13 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request)) #14 /var/www/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #15 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure)) #16 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #17 /var/www/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #18 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure)) #19 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #20 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(46): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #21 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure)) #22 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #23 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #24 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(149): Illuminate\Pipeline\Pipeline->then(Object(Closure)) #25 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request)) #26 /var/www/public/index.php(53): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request)) #27 {main}

@0Styless commented on GitHub (Aug 6, 2017): Hello @ssddanbrown Anything else works fine for me. I can assure you that during the editing was no connection problem. This is the output of the logfile (storage/logs/laravel.log) when the error occurs (debugging turnt on): `[2017-08-06 13:23:44] production.ERROR: Illuminate\Session\TokenMismatchException in /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php:68 Stack trace: #0 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure)) #1 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #2 /var/www/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #3 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure)) #4 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #5 /var/www/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(59): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #6 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure)) #7 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #8 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #9 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(561): Illuminate\Pipeline\Pipeline->then(Object(Closure)) #10 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(520): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request)) #11 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(498): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request)) #12 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(174): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request)) #13 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request)) #14 /var/www/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #15 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure)) #16 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #17 /var/www/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #18 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure)) #19 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #20 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(46): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #21 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure)) #22 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #23 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #24 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(149): Illuminate\Pipeline\Pipeline->then(Object(Closure)) #25 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request)) #26 /var/www/public/index.php(53): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request)) #27 {main} `
Author
Owner

@ssddanbrown commented on GitHub (Aug 6, 2017):

@0Styless Are you accessing via an IP or using localhost or do you have a domain set up?

Something appears to be off with the session. Possibly a permissions issue in the storage/framework folder. You could try setting both CACHE_DRIVER and SESSION_DRIVER options in the .env file to database.

@ssddanbrown commented on GitHub (Aug 6, 2017): @0Styless Are you accessing via an IP or using `localhost` or do you have a domain set up? Something appears to be off with the session. Possibly a permissions issue in the `storage/framework` folder. You could try setting both `CACHE_DRIVER` and `SESSION_DRIVER` options in the `.env` file to `database`.
Author
Owner

@0Styless commented on GitHub (Aug 6, 2017):

@ssddanbrown I'am using a domain set up. Unfortunately I already set this two options to the value database.

The storage/framework folder is also completely writable by the webserver.

@0Styless commented on GitHub (Aug 6, 2017): @ssddanbrown I'am using a domain set up. Unfortunately I already set this two options to the value `database`. The `storage/framework` folder is also completely writable by the webserver.
Author
Owner

@ssddanbrown commented on GitHub (Aug 7, 2017):

The issue would the suggest the session is not being saved consistently. Is there anything fancy about your setup? What OS/Webserver are you running on?

@ssddanbrown commented on GitHub (Aug 7, 2017): The issue would the suggest the session is not being saved consistently. Is there anything fancy about your setup? What OS/Webserver are you running on?
Author
Owner

@0Styless commented on GitHub (Aug 8, 2017):

Server version: Apache/2.4.18 (Ubuntu)
VERSION="16.04.2 LTS (Xenial Xerus)"

Maybe there is a problem with these options?

FileETag None
Header always append X-Frame-Options SAMEORIGIN
Header set X-XSS-Protection "1; mode=block"
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure

@0Styless commented on GitHub (Aug 8, 2017): Server version: Apache/2.4.18 (Ubuntu) VERSION="16.04.2 LTS (Xenial Xerus)" Maybe there is a problem with these options? `FileETag None` `Header always append X-Frame-Options SAMEORIGIN` `Header set X-XSS-Protection "1; mode=block"` `Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure`
Author
Owner

@ssddanbrown commented on GitHub (Aug 8, 2017):

@0Styless I would test it with the bottom option removed.

The background requests used for saving drafts do pick up tokens from cookies so that may be affecting things.

@ssddanbrown commented on GitHub (Aug 8, 2017): @0Styless I would test it with the bottom option removed. The background requests used for saving drafts do pick up tokens from cookies so that may be affecting things.
Author
Owner

@0Styless commented on GitHub (Aug 9, 2017):

@ssddanbrown It seems to work now. Thank you very much for your help :)

I think BookStack is a great web-application and deserve way more attention. One last question. Any helpful suggestions about the web application firewall modsecurity in combination with BookStack?

@0Styless commented on GitHub (Aug 9, 2017): @ssddanbrown It seems to work now. Thank you very much for your help :) I think BookStack is a great web-application and deserve way more attention. One last question. Any helpful suggestions about the web application firewall modsecurity in combination with BookStack?
Author
Owner

@ssddanbrown commented on GitHub (Aug 10, 2017):

@0Styless Apologies but I don't have any experience with modsecurity to be able to provide any general advice on that.

Since the main problem here seems to be fixed now I'll close this issue.

@ssddanbrown commented on GitHub (Aug 10, 2017): @0Styless Apologies but I don't have any experience with modsecurity to be able to provide any general advice on that. Since the main problem here seems to be fixed now I'll close this issue.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/BookStack#395