Fatal Error on Empty Redis Port Setting in Nginx Helper Plugin
gagan0123 opened this issue · comments
Describe the bug
In the Nginx Helper plugin, enabling purge with "Redis Cache" as the "Caching Method" and saving the Redis settings with an empty port leads to a site crash. Any attempts to save settings or initiate a purge thereafter cause a fatal PHP error due to a type mismatch in the port argument.
To Reproduce
Steps to reproduce the behavior:
- Go to the Nginx Helper plugin settings.
- Enable purge and select "Redis Cache" as the "Caching Method".
- Save the Redis settings with the port field empty.
- Try saving any subsequent settings or perform a purge.
- Observe that the site becomes inaccessible and a PHP fatal error occurs.
NOTE: The error only occurs if the redis
module is enabled in PHP; otherwise, the code never reaches the PhpRedis_Purger
constructor
Expected behavior
The expected behavior of the plugin is that it should handle an empty port setting gracefully. Either by validating the input to ensure it's a number or by defaulting to a standard port when none is provided, thus preventing the site from crashing.
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
The error reported is:
PHP Fatal error: Uncaught TypeError: Redis::connect(): Argument #2 ($port) must be of type int, string given in /app/wordpress/wp-content/plugins/nginx-helper/admin/class-phpredis-purger.php:45
This suggests that there's a type-check issue in the code handling the Redis port settings, which could be mitigated by additional input validation or setting default values.
Fixed in version 2.2.5