Best community, I am new to this platform, i am experiencing error to upload pictures on open monograph press, i thought problem was old platform we were on version 3.3.0.13, it was update to 3.4.0.5, the problem still exists, OMP is installed on Ubuntu 22.04.4 LTS and PHP version 8.0.30, we have Dev site for testing, and it also updated to 3.4.0.5 and is running on Cent OS version 7 , PHP version 8.2.20. Platform is working flawlessly. please help me to locate this error. I have attached pic and cycle error.
There is My apache error logs
Analyse this apache logs [Wed Jun 26 12:10:47.974912 2024] [php:notice] [pid 3569] [client 196.254.83.15:50283] Slim Application Error:\nType: Error\nMessage: Call to undefined function APP\publication\imagecreatefrompng()\nFile: /var/www/html/classes/publication/Repository.php\nLine: 437\nTrace: #0 /var/www/html/classes/publication/Repository.php(282): APP\publication\Repository->makeThumbnail()\n#1 /var/www/html/lib/pkp/api/v1/submissions/PKPSubmissionHandler.php(1123): APP\publication\Repository->edit()\n#2 [internal function]: PKP\API\v1\submissions\PKPSubmissionHandler->editPublication()\n#3 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(40): call_user_func()\n#4 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/Route.php(281): Slim\Handlers\Strategies\RequestResponse->__invoke()\n#5 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route->__invoke()\n#6 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/Route.php(268): Slim\Route->callMiddlewareStack()\n#7 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/App.php(503): Slim\Route->run()\n#8 /var/www/html/lib/pkp/classes/security/authorization/internal/ApiAuthorizationMiddleware.php(90): Slim\App->__invoke()\n#9 [internal function]: PKP\security\authorization\internal\ApiAuthorizationMiddleware->__invoke()\n#10 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()\n#11 [internal function]: Slim\DeferredCallable->__invoke()\n#12 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()\n#13 /var/www/html/lib/pkp/classes/security/authorization/internal/ApiCsrfMiddleware.php(56): Slim\App->Slim\{closure}()\n#14 [internal function]: PKP\security\authorization\internal\ApiCsrfMiddleware->__invoke()\n#15 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()\n#16 [internal function]: Slim\DeferredCallable->__invoke()\n#17 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()\n#18 /var/www/html/lib/pkp/classes/security/authorization/internal/ApiTokenDecodingMiddleware.php(140): Slim\App->Slim\{closure}()\n#19 [internal function]: PKP\security\authorization\internal\ApiTokenDecodingMiddleware->__invoke()\n#20 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()\n#21 [internal function]: Slim\DeferredCallable->__invoke()\n#22 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()\n#23 /var/www/html/lib/pkp/classes/handler/APIHandler.php(83): Slim\App->Slim\{closure}()\n#24 [internal function]: PKP\handler\APIHandler->PKP\handler\{closure}()\n#25 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()\n#26 [internal function]: Slim\DeferredCallable->__invoke()\n#27 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()\n#28 /var/www/html/lib/pkp/classes/handler/APIHandler.php(100): Slim\App->Slim\{closure}()\n#29 [internal function]: PKP\handler\APIHandler->PKP\handler\{closure}()\n#30 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()\n#31 [internal function]: Slim\DeferredCallable->__invoke()\n#32 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()\n#33 /var/www/html/lib/pkp/classes/handler/APIHandler.php(105): Slim\App->Slim\{closure}()\n#34 [internal function]: PKP\handler\APIHandler->PKP\handler\{closure}()\n#35 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()\n#36 [internal function]: Slim\DeferredCallable->__invoke()\n#37 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()\n#38 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App->Slim\{closure}()\n#39 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/App.php(392): Slim\App->callMiddlewareStack()\n#40 /var/www/html/lib/pkp/classes/handler/APIHandler.php(98): Slim\App->process()\n#41 [internal function]: PKP\handler\APIHandler->PKP\handler\{closure}()\n#42 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()\n#43 [internal function]: Slim\DeferredCallable->__invoke()\n#44 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()\n#45 /var/www/html/lib/pkp/classes/handler/APIHandler.php(105): Slim\App->Slim\{closure}()\n#46 [internal function]: PKP\handler\APIHandler->PKP\handler\{closure}()\n#47 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()\n#48 [internal function]: Slim\DeferredCallable->__invoke()\n#49 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()\n#50 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App->Slim\{closure}()\n#51 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/App.php(392): Slim\App->callMiddlewareStack()\n#52 /var/www/html/lib/pkp/lib/vendor/slim/slim/Slim/App.php(297): Slim\App->process()\n#53 /var/www/html/lib/pkp/classes/core/APIRouter.php(110): Slim\App->run()\n#54 /var/www/html/lib/pkp/classes/core/Dispatcher.php(165): PKP\core\APIRouter->route()\n#55 /var/www/html/lib/pkp/classes/core/PKPApplication.php(388): PKP\core\Dispatcher->dispatch()\n#56 /var/www/html/index.php(21): PKP\core\PKPApplication->execute()\n#57 {main}\nView in rendered output by enabling the “displayErrorDetails” setting.\n, referer: https://monographs.ufs.ac.za/index.php/alp/workflow/index/5/5
ChatGPT
The error message from the Apache logs indicates a problem in the Slim framework application used by Open Monograph Press (OMP). Here’s a detailed analysis of the error:
Error Summary
- Error Type: Fatal Error
- Error Message:
Call to undefined function APP\publication\imagecreatefrompng()
- File:
/var/www/html/classes/publication/Repository.php
- Line: 437
Trace Analysis
The error occurred during the execution of a function that attempts to create a thumbnail image from a PNG file using the imagecreatefrompng()
function. This function is part of the GD library in PHP, which is used for image processing.
Possible Causes
- GD Library Not Installed:
- The GD library might not be installed or enabled in your PHP environment. The function
imagecreatefrompng()
is part of this library, and if it’s not available, PHP will throw an undefined function error.
- GD Library Not Loaded:
- The GD library might be installed but not loaded. This could happen if the PHP configuration file (
php.ini
) does not include the correct extension directive.
- Code Issue:
- There could be an issue in the code itself, but since
imagecreatefrompng()
is a standard PHP function, this is unlikely unless there is a typo or misconfiguration in the function call.
Steps to Fix
1. Install GD Library
Ensure that the GD library is installed. You can install it using the following commands:
sh
Copy code
sudo apt-get update
sudo apt-get install php-gd
2. Enable GD Library
Ensure that the GD extension is enabled in your php.ini
file. Look for a line that includes the gd
extension and make sure it is uncommented:
ini
Copy code
extension=gd
3. Restart Apache
After installing or enabling the GD library, restart Apache to apply the changes:
sh
Copy code
sudo systemctl restart apache2
4. Verify Installation
To verify that the GD library is installed and enabled, you can create a PHP file with the following content and access it via your web browser:
php
Copy code
<?php
phpinfo();
?>
Search for the GD section in the output to confirm that the library is installed and enabled.
Example Fix in Code
If the issue persists after ensuring the GD library is installed and enabled, you might want to add a check in your PHP code to see if the function exists before calling it:
php
Copy code
if (function_exists('imagecreatefrompng')) {
$image = imagecreatefrompng($filePath);
// Proceed with creating the thumbnail
} else {
// Handle the error, perhaps log it or notify the user
error_log('GD library is not available.');
}
Conclusion
The error Call to undefined function APP\publication\imagecreatefrompng()
indicates that the GD library, which provides the imagecreatefrompng()
function, is not available in your PHP environment. By installing and enabling the GD library, and ensuring it is correctly configured in your php.ini
file, you should be able to resolve this issue. If the problem persists, adding checks in your code to handle the absence of the GD library gracefully can also help mitigate the error.
As you’ve noted, OMP requires the GD PHP extension to be installed and enabled.
Regards,
Alec Smecher
Public Knowledge Project Team
This topic was automatically closed after 9 days. New replies are no longer allowed.