ID: 21625 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] -Status: Assigned +Status: Closed Bug Type: PHP options/info functions Operating System: Mandrake Linux 9.0/Cooker PHP Version: 4.3.0 Assigned To: iliaa New Comment:
This bug has been fixed in CVS. In case this was a PHP problem, snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. In case this was a documentation problem, the fix will show up soon at http://www.php.net/manual/. In case this was a PHP.net website problem, the change will show up on the PHP.net site and on the mirror sites in short time. Thank you for the report, and for helping us make PHP better. Previous Comments: ------------------------------------------------------------------------ [2003-01-14 00:44:11] [EMAIL PROTECTED] oops, sorry ------------------------------------------------------------------------ [2003-01-14 00:43:27] [EMAIL PROTECTED] Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php ------------------------------------------------------------------------ [2003-01-13 19:46:35] [EMAIL PROTECTED] Is there a way to cleanly add a patch to bugs.php.net? I e-mailed it to sniper and oden, but anyways, here it is. Hope it's readable... --- php-4.3.0/main/php_ini.c.orig 2003-01-13 18:17:18.000000000 -0400 +++ php-4.3.0/main/php_ini.c 2003-01-13 19:03:23.000000000 -0400 @@ -30,6 +30,9 @@ #include "zend_highlight.h" #include "SAPI.h" #include "php_main.h" +#include <sys/types.h> +#include <sys/dir.h> +extern int alphasort(); =20 #ifndef S_ISREG #define S_ISREG(mode) (((mode) & S_IFMT) =3D=3D S_IFREG) @@ -232,6 +235,8 @@ zend_file_handle fh; DIR *dirp =3D NULL; struct dirent *dir_entry; + struct dirent **inifiles; + int inicount,i; struct stat sb; char ini_file[MAXPATHLEN]; char *p; @@ -400,10 +405,11 @@ dirp =3D VCWD_OPENDIR(PHP_CONFIG_FILE_SCAN_DIR); if (dirp) { fh.type =3D ZEND_HANDLE_FP; - while ((dir_entry =3D readdir(dirp)) !=3D NULL) { + inicount =3D scandir(PHP_CONFIG_FILE_SCAN_DIR, &inifiles, NULL, alphaso= rt); + for(i=3D1;i<inicount+1;++i) { /* check for a .ini extension */ - if ((p =3D strrchr(dir_entry->d_name,'.')) && strcmp(p,".ini")) contin= ue; - snprintf(ini_file, MAXPATHLEN, "%s%c%s", PHP_CONFIG_FILE_SCAN_DIR, DEF= AULT_SLASH, dir_entry->d_name); + if ((p =3D strrchr(inifiles[i-1]->d_name,'.')) && strcmp(p,".ini")) co= ntinue; + snprintf(ini_file, MAXPATHLEN, "%s%c%s", PHP_CONFIG_FILE_SCAN_DIR, DEF= AULT_SLASH, inifiles[i-1]->d_name); if (VCWD_STAT(ini_file, &sb) =3D=3D 0) { if (S_ISREG(sb.st_mode)) { if ((fh.handle.fp =3D VCWD_FOPEN(ini_file, "r"))) { ------------------------------------------------------------------------ [2003-01-13 19:42:35] [EMAIL PROTECTED] php_ini.c uses readdir, which gives all the files on the directory, *but in the order of the filesystem*. ie, it's acting like "ls -U", instead of just "ls". The problem is that there is no way of knowing which file will be loaded first and which one will be loaded last, with causes problems with the way Mandrake loads extensions, as we create ini files in the format 16_dba.ini ... 52_xslt.ini. Those files contain the "extention =3D" directive, so that modules can be loaded in the right order. For tricky extensions, like recode (who has to be loaded first), apc and pspell (who have to be loaded last), we need to be able to control the load order of the ini files. I enclose a small hack I made using scandir and alphasort. It should work on BSD and Linux systems, maybe on other platforms, so we should use ifdefines on platforms that do not support it. Regards, Jean-Michel Dault MandrakeSoft Apache/PHP packager ------------------------------------------------------------------------ [2003-01-13 19:03:07] [EMAIL PROTECTED] What do you mean with 'randomly listed' ? Listed in random order or only some files are listed..? ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/21625 -- Edit this bug report at http://bugs.php.net/?id=21625&edit=1