chamilo / chamilo-lms

Chamilo is a learning management system focused on ease of use and accessibility
https://chamilo.org
GNU General Public License v3.0
811 stars 481 forks source link

Cannot generate PDF Certifcate #5910

Open Arricdev opened 2 weeks ago

Arricdev commented 2 weeks ago

Describe A clear and concise description of what the bug is.

After migrating to 1.11.28 When I try to download a certificate in PDF i Get an error 500

generating html certificate is OK

Was working in 1.11.26

To Reproduce Steps to reproduce the behavior:

  1. Go to 'https://yourwebsite/certificates/index.php?id=XXX&user_id=XXX&action=export
  2. See error

logs

Wed Nov 06 11:51:30.968799 2024] [proxy_fcgi:error] [pid 3934032] [client 127.0.0.1:52186] AH01071: Got error 'PHP message: PHP Fatal error: Uncaught LogicException: To filter with a CSS selector, install the CssSelector component ("composer require symfony/css-selector"). Or use filterXpath instead. in path-to-chamilo/vendor/symfony/dom-crawler/Crawler.php:1296\nStack trace:\n#0 path-to-chamilo/vendor/symfony/dom-crawler/Crawler.php(791): Symfony\Component\DomCrawler\Crawler->createCssSelectorConverter()\n#1 path-to-chamilo/main/inc/lib/pdf.lib.php(345): Symfony\Component\DomCrawler\Crawler->filter()\n#2 path-to-chamilo/certificates/index.php(84): PDF->html_to_pdf()\n#3 {main}\n thrown in path-to-chamilo/vendor/symfony/dom-crawler/Crawler.php on line 1296', referer: https://yourwebsite/certificates/index.php?id=xxx&user_id=xxxxx&action=export

Expected behavior A clear and concise description of what you expected to happen.

PDF Download

Kaneda-1 commented 2 weeks ago

Similar a https://github.com/chamilo/chamilo-lms/issues/3774 download the /vendor folder from the url https://github.com/chamilo/chamilo-lms/releases/download/v1.11.28/chamilo-1.11.28.zip and replaces the contents of the /vendor folder locally

The error you're seeing indicates that the CssSelector component from Symfony is missing, which is necessary for filtering with a CSS selector. Here's how to fix it:

Install the CssSelector component: Open a terminal in your project directory and run the following command to install the component rm composer.lock rm -rf web/ vendor/ composer clear-cache composer update

Arricdev commented 2 weeks ago

Thanks for your answer,

I already got the vendor/ dir when I migrated but the component seems to be missing.

Does that work if I install the component with composer on a QA server and then copy vendor/ dir ? This would generate less downtime

Arricdev commented 2 weeks ago

Ok, it worked , thank you. Maybe it would be great to update the release ?

ywarnier commented 2 weeks ago

Yes, we are working on a new release for within a few days.