Open Obata2024 opened 5 months ago
Looks to me that the ctype part of that if statement should just be removed. As far as I can see so far none of the other drivers check anything other than that the value isn't empty before using it.
Removing the check might have unintended consequences so a better approach would be to simply cast the variable as a string which is done pretty much everywhere else in the framework.
Change line 98 in the file to read:
if ( ! empty($this->port) && ctype_digit((string) $this->port))
Removing the check might have unintended consequences so a better approach would be to simply cast the variable as a string which is done pretty much everywhere else in the framework.
It's inconsistently checked in each database driver. Most just check if the port is not empty. In this case, it's just to find out if the port number is not empty. If casting to a string, this should also be applied elsewhere such as here and here.
Correct. Also in DB_driver.php, DB_query_builder.php, Session.php, Form_validation.php and Image_lib.php
The thing is, in some of these cases the variable is expected to be a string and not an int, for example in the valid_url
function. The lack of type hinting on the method parameters is biting us here.
Either way, the simplest fix here is casting. I'll open a PR later and add it to my fork.
When trying to use PostgreSQL under the given conditions, the following error occurs:
Should I modify the postgre/postgre_driver.php file to resolve this? If it’s acceptable, I can submit a PR.
Also, has anyone resolved the same issue using an override? I attempted to create a custom class under the application/core directory to override it, but this error still persists.