scandir call doesn't pick up files > 2G in size
Hello,
I am a new user of phpLiteadmin and I faced an issue where i was able to load databases < 1GB in size but when I moved to a database greater than 2GB, phpLite throws an error saying the database is not found. On further debug, I found that the error is coming from scandir function in phpLiteadmin.php where it doesn't even report the database as a file in my expected directory.
Can someone please clarify if this is a limitation or a bug and how to get around it?
Comments (7)
-
repo owner -
repo owner I tried to reproduce this, but could not. I created a 2,28 GiB database (2.454.396.928 Bytes) and phpLiteAdmin works fine. This test was done on an NTFS filesystem on Windows 7 with PHP 5.6.31.
Please provide more info on your setup. May it be that you are on an ext filesystem? not ext2 or ext4, but plain old ext? It does not support files larger than 2GiB. So this would mean it is a limitation of your filesystem.
-
Hi,
Thanks for trying it out. Explicitly specifying the database using the $databases variable worked for me.
Filesystem : ext4 Operating System: Linux PHPLiteAdmin Version: 1.9.7
-
repo owner - changed milestone to 1.9.9
-
repo owner I tried a 3,746,520 KiB file with PHP 7.2.24 on an ext4 filesystem using Ubuntu Linux 18.04 and the file was found. It seems this was a problem with a 32 bit PHP version. I found this in the php documentation:
Note: Because PHP's integer type is signed and many platforms use 32bit integers, some filesystem functions may return unexpected results for files which are larger than 2GB.
I think there is not much we can do about it. I added a note in the wiki that you need a 64bit php in order to work with databases > 2 GB: https://bitbucket.org/phpliteadmin/public/wiki/Installation
As most modern PHP installations should be 64bit, I guess we can close this issue.
-
repo owner - removed milestone
-
repo owner - changed status to wontfix
- Log in to comment
Hi.
thanks for reporting. Please provide me some more details:
To "get around it": If scanning for the files is really the problem, you can specify the file using the
$databases
config setting and set$directory=false
. There is an example in the sample config.