mirror of
https://github.com/BookStackApp/BookStack.git
synced 2026-02-09 11:19:38 +03:00
Error export book from API #2758
Closed
opened 2026-02-05 05:04:22 +03:00 by OVERLORD
·
15 comments
No Branch/Tag Specified
development
further_theme_development
l10n_development
release
llm_only
vectors
v25-11
docker_env
drawio_rendering
user_permissions
ldap_host_failover
svg_image
prosemirror
captcha_example
fix/video-export
v25.12.3
v25.12.2
v25.12.1
v25.12
v25.11.6
v25.11.5
v25.11.4
v24.11.4
v25.11.3
v25.11.2
v25.11.1
v25.11
v25.07.3
v25.07.2
v25.07.1
v25.07
v25.05.2
v25.05.1
v25.05
v25.02.5
v25.02.4
v25.02.3
v25.02.2
v25.02.1
v25.02
v24.12.1
v24.12
v24.10.3
v24.10.2
v24.10.1
v24.10
v24.05.4
v24.05.3
v24.05.2
v24.05.1
v24.05
v24.02.3
v24.02.2
v24.02.1
v24.02
v23.12.3
v23.12.2
v23.12.1
v23.12
v23.10.4
v23.10.3
v23.10.2
v23.10.1
v23.10
v23.08.3
v23.08.2
v23.08.1
v23.08
v23.06.2
v23.06.1
v23.06
v23.05.2
v23.05.1
v23.05
v23.02.3
v23.02.2
v23.02.1
v23.02
v23.01.1
v23.01
v22.11.1
v22.11
v22.10.2
v22.10.1
v22.10
v22.09.1
v22.09
v22.07.3
v22.07.2
v22.07.1
v22.07
v22.06.2
v22.06.1
v22.06
v22.04.2
v22.04.1
v22.04
v22.03.1
v22.03
v22.02.3
v22.02.2
v22.02.1
v22.02
v21.12.5
v21.12.4
v21.12.3
v21.12.2
v21.12.1
v21.12
v21.11.3
v21.11.2
v21.11.1
v21.11
v21.10.3
v21.10.2
v21.10.1
v21.10
v21.08.6
v21.08.5
v21.08.4
v21.08.3
v21.08.2
v21.08.1
v21.08
v21.05.4
v21.05.3
v21.05.2
v21.05.1
v21.05
v21.04.6
v21.04.5
v21.04.4
v21.04.3
v21.04.2
v21.04.1
v21.04
v0.31.8
v0.31.7
v0.31.6
v0.31.5
v0.31.4
v0.31.3
v0.31.2
v0.31.1
v0.31.0
v0.30.7
v0.30.6
v0.30.5
v0.30.4
v0.30.3
v0.30.2
v0.30.1
v0.30.0
v0.29.3
v0.29.2
v0.29.1
v0.29.0
v0.28.3
v0.28.2
v0.28.1
v0.28.0
v0.27.5
v0.27.4
v0.27.3
v0.27.2
v0.27.1
v0.27
v0.26.4
v0.26.3
v0.26.2
v0.26.1
v0.26.0
v0.25.5
v0.25.4
v0.25.3
v0.25.2
v0.25.1
v0.25.0
v0.24.3
v0.24.2
v0.24.1
v0.24.0
v0.23.2
v0.23.1
v0.23.0
v0.22.0
v0.21.0
v0.20.3
v0.20.2
v0.20.1
v0.20.0
v0.19.0
v0.18.5
v0.18.4
v0.18.3
v0.18.2
v0.18.1
v0.18.0
v0.17.4
v0.17.3
v0.17.2
v0.17.1
v0.17.0
v0.16.3
v0.16.2
v0.16.1
v0.16.0
v0.15.3
v0.15.2
v0.15.1
v0.15.0
v0.14.3
v0.14.2
v0.14.1
v0.14.0
v0.13.1
v0.13.0
v0.12.2
v0.12.1
v0.12.0
v0.11.2
v0.11.1
v0.11.0
v0.10.0
v0.9.3
v0.9.2
v0.9.1
v0.9.0
v0.8.2
v0.8.1
v0.8.0
v0.7.6
v0.7.5
v0.7.4
v0.7.3
0.7.2
v.0.7.1
v0.7.0
v0.6.3
v0.6.2
v0.6.1
v0.6.0
v0.5.0
Labels
Clear labels
🎨 Design
📖 Docs Update
🐛 Bug
🐛 Bug
:cat2:🐈 Possible duplicate
💿 Database
☕ Open to discussion
💻 Front-End
🐕 Support
🚪 Authentication
🌍 Translations
🔌 API Task
🏭 Back-End
⛲ Upstream
🔨 Feature Request
🛠️ Enhancement
🛠️ Enhancement
🛠️ Enhancement
❤️ Happy feedback
🔒 Security
🔍 Pending Validation
💆 UX
📝 WYSIWYG Editor
🌔 Out of scope
🔩 API Request
:octocat: Admin/Meta
🖌️ View Customization
❓ Question
🚀 Priority
🛡️ Blocked
🚚 Export System
♿ A11y
🔧 Maintenance
> Markdown Editor
pull-request
Mirrored from GitHub Pull Request
No Label
🐕 Support
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/BookStack#2758
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @cevinov on GitHub (Apr 24, 2022).
Attempted Debugging
Searched GitHub Issues
Describe the Scenario
Hello i already try to use this guide link :
https://www.reddit.com/r/BookStack/comments/razmx8/exporting_the_whole_bookstack_as_html_or_pdf_file/
But i got this error :
PHP Fatal error: Uncaught TypeError: Return value of apiGetJson() must be of the type array, null returned in /book/book-to-static.php:240
Stack trace:
#0 /book/book-to-static.php(192): apiGetJson()
#1 /book/book-to-static.php(32): getBookBySlug()
#2 {main}
thrown in /book/book-to-static.php on line 240
Footage :
https://screenrec.com/share/dSj6oqNKyr
Exact BookStack Version
PHP Fatal error: Uncaught TypeError: Return value of apiGetJson() must be of the type array, null returned in /book/book-to-static.php:240 Stack trace: #0 /book/book-to-static.php(192): apiGetJson() #1 /book/book-to-static.php(32): getBookBySlug() #2 {main} thrown in /book/book-to-static.php on line 240
Log Content
[2022-04-03 09:44:49] production.ERROR: Allowed memory size of 134217728 bytes exhausted (tried to allocate 116640000 bytes) {"userId":1,"exception":"[object] (Symfony\Component\ErrorHandler\Error\FatalError(code: 0): Allowed memory size of 134217728 bytes exhausted (tried to allocate 116640000 bytes) at /var/www/html/vendor/intervention/image/src/Intervention/Image/Gd/Decoder.php:128)
[stacktrace]
#0 {main}
"}
[2022-04-24 12:18:11] production.ERROR: Allowed memory size of 134217728 bytes exhausted (tried to allocate 64448059 bytes) {"userId":1,"exception":"[object] (Symfony\Component\ErrorHandler\Error\FatalError(code: 0): Allowed memory size of 134217728 bytes exhausted (tried to allocate 64448059 bytes) at /var/www/html/app/Entities/Tools/ExportFormatter.php:231)
[stacktrace]
#0 {main}
"}
[2022-04-24 12:18:19] production.ERROR: Allowed memory size of 134217728 bytes exhausted (tried to allocate 65950651 bytes) {"userId":1,"exception":"[object] (Symfony\Component\ErrorHandler\Error\FatalError(code: 0): Allowed memory size of 134217728 bytes exhausted (tried to allocate 65950651 bytes) at /var/www/html/app/Entities/Tools/ExportFormatter.php:231)
[stacktrace]
#0 {main}
"}
[2022-04-24 12:18:32] production.ERROR: Allowed memory size of 134217728 bytes exhausted (tried to allocate 64448059 bytes) {"userId":1,"exception":"[object] (Symfony\Component\ErrorHandler\Error\FatalError(code: 0): Allowed memory size of 134217728 bytes exhausted (tried to allocate 64448059 bytes) at /var/www/html/app/Entities/Tools/ExportFormatter.php:231)
[stacktrace]
#0 {main}
"}
[2022-04-24 12:19:00] production.ERROR: Allowed memory size of 134217728 bytes exhausted (tried to allocate 64448059 bytes) {"userId":1,"exception":"[object] (Symfony\Component\ErrorHandler\Error\FatalError(code: 0): Allowed memory size of 134217728 bytes exhausted (tried to allocate 64448059 bytes) at /var/www/html/app/Entities/Tools/ExportFormatter.php:231)
[stacktrace]
#0 {main}
"}
[2022-04-24 12:21:24] production.ERROR: Allowed memory size of 134217728 bytes exhausted (tried to allocate 64448059 bytes) {"userId":1,"exception":"[object] (Symfony\Component\ErrorHandler\Error\FatalError(code: 0): Allowed memory size of 134217728 bytes exhausted (tried to allocate 64448059 bytes) at /var/www/html/app/Entities/Tools/ExportFormatter.php:231)
[stacktrace]
#0 {main}
"}
[2022-04-24 12:23:23] production.ERROR: Allowed memory size of 134217728 bytes exhausted (tried to allocate 64448059 bytes) {"userId":1,"exception":"[object] (Symfony\Component\ErrorHandler\Error\FatalError(code: 0): Allowed memory size of 134217728 bytes exhausted (tried to allocate 64448059 bytes) at /var/www/html/app/Entities/Tools/ExportFormatter.php:231)
[stacktrace]
#0 {main}
"}
[2022-04-24 13:06:12] production.ERROR: Allowed memory size of 134217728 bytes exhausted (tried to allocate 64448059 bytes) {"userId":1,"exception":"[object] (Symfony\Component\ErrorHandler\Error\FatalError(code: 0): Allowed memory size of 134217728 bytes exhausted (tried to allocate 64448059 bytes) at /var/www/html/app/Entities/Tools/ExportFormatter.php:231)
[stacktrace]
#0 {main}
"}
PHP Version
7.4
Hosting Environment
Oracle cloud
OS : Oracle linux 8.5
Bookstack install on Docker
Docker version 20.10.14
@ssddanbrown commented on GitHub (Apr 24, 2022):
Hi @cevinov,
The API scripts have fairly limited error handling, since they're only provided as examples.
This error can error on any issue contacting your instance over the API.
Before anything else, just a warning, your video shows your BookStack URL and API credentials. Anyone could use these details to access your instance. You might want to take this video down if this is a security concern for you.
Otherwise:
$apiUrlvariable at the top of the script does not look correct. This should be the base URL of your BookStack instance, not a link to a specific book (So remove the/books/c-documentationpart).php book-to-static.php <book_url_slug> <output_dir>. You ran it with only passing./bookwhich the script would attempt to use as an identifier for the book. The first argument should be the book slug. You probably want to run it like so:Just keep in mind these scripts are examples for API users, More of a jumping-off point. They are not built to be 100% complete or user-friendly.
@cevinov commented on GitHub (Apr 24, 2022):
Hello sir, thanks for the reply. I already doing your suggestion. but i still get that error sir :

@ssddanbrown commented on GitHub (Apr 24, 2022):
It looks like it's getting further, since it's now getting to line 45 which is when page content is fetched (After other API calls), but it's hard for me to offer further support really since this could be due to a range of things.
You'd need to start check the
$pagesvariable is as expected around line 45, and check for http request errors within theapiGetJsonfunction. There is add(...);function in the script which can help dump out variables for debugging.@cevinov commented on GitHub (Apr 24, 2022):
I see sir, but how to resolve this issue sir ?

I choose this method (PHP script) because i can't export it from the UI.
FYI I'm already do this to prevent data loss
https://www.bookstackapp.com/docs/admin/backup-restore/#files
@cevinov commented on GitHub (Apr 24, 2022):
and may i know how to move page without one by one sir ?. For example if i want to move 20 pages to other chapter page or book
@ssddanbrown commented on GitHub (Apr 24, 2022):
Based upon the error logs you posted originally, It looks like you're running out of memory for PHP. This is usually configured via a
memory_limitoption in yourphp.inifile on your system.Go to the parent book and use the "Sort" action. This allows you to move multiple items with relative ease.
@cevinov commented on GitHub (Apr 24, 2022):
Is this correct sir ? /container-bookstack/database/php
@ssddanbrown commented on GitHub (Apr 24, 2022):
@cevinov Maybe? Unfortunately I am not familiar with Oracle Linux or your setup to be sure. You can try adding a
memory_limitoption there to see if it makes things work, or if it changes the error message:@cevinov commented on GitHub (Apr 24, 2022):
Hello sir, after i check on the laravel.log, the location is :
/var/www/html/app/Entities/Tools/ExportFormatter.php
And it says that i need to change memory size, but i don't see anything about that.

On line 231, but i don't know where do i need to put it sir ?

@ssddanbrown commented on GitHub (Apr 24, 2022):
@cevinov The
ExportFormatter.phpfile is just where the memory is running out at. It's likely caused by a very large image in one of the pages which leads to hitting the memory limit at that line.You should not be editing that PHP file.
Based upon your error log message, your PHP memory limit is still about 128MB. This may not be enough for the export to run.
This is why you need to edit the
memory_limitin yourphp.inifile. Sometimes there might be mulitplephp.inifile so you have to find the right one but this depends on your operating system and the method to run PHP and your operating system. Sometimes you might have to restart the PHP process and/or the webserver after changing any configuration for changes to take place.@cevinov commented on GitHub (Apr 24, 2022):
I already try to change it sir, but it says :

laravel.log :
[2022-04-24 18:22:05] production.ERROR: Maximum execution time of 30 seconds exceeded {"userId":1,"exception":"[object] (Symfony\Component\ErrorHandler\Error\FatalError(code: 0): Maximum execution time of 30 seconds exceeded at /var/www/html/app/Entities/Tools/ExportFormatter.php:231)
[stacktrace]
#0 {main}
"}
Pic :


@ssddanbrown commented on GitHub (Apr 25, 2022):
@cevinov Well it looks like you're getting further since you're now hitting a new limit.
It looks like that
max_execution_timeis not taking affect if you're still getting a timeout of 30 seconds. Either you're editing the wrong file or you needs to restart processes that use that configuration (Web server/Apache).I saw you mentioned using containers. You might need to refer to the documentation of the container that you're using to find the right way to edit the
php.inioptions. It's easy for changes to get lost with containers, if you are editing files within them.@ssddanbrown commented on GitHub (May 9, 2022):
Since there's been no follow-up I'm going to close this. If the issue remains and is something you still require to be fixed respond to my previous comment and this can then be re-opened.
@cittadhammo commented on GitHub (Aug 18, 2024):
Dear @ssddanbrown, I run into the same error when trying to export a large book with largish images.
I have increased the limit like mentioned:
and restarded the docker.
but still get the error in the
laravel.lo[2024-08-18 08:30:35] production.ERROR: Maximum execution time of 30 seconds exceeded {"userId":9,"exception":"[object] (Symfony\\Component\\ErrorHandler\\Error\\FatalError(code: 0): Maximum execution time of 30 seconds exceeded at /app/www/vendor/dompdf/dompdf/lib/Cpdf.php:5765)@cittadhammo commented on GitHub (Aug 18, 2024):
Might actually be related to timout https://github.com/BookStackApp/BookStack/issues/5119