ID: 28493 User updated by: sanondysie at tc17 dot com Reported By: sanondysie at tc17 dot com Status: Open Bug Type: Dynamic loading Operating System: Windows 98 PHP Version: 4.3.6 New Comment:
Further research especially with a tool a little better suited to the task available at http://www.dependencywalker.com/ clarifies the problem. The issue appears to be with two calls in php_imap.dll: EncryptMessage DecryptMessage that are imported from SECUR32.DLL. Presumably these functions are exported from SECUR32.DLL on WinNT platforms but not on Win98. A check of these versions of SECUR32.DLL revealed that none of them export the required functions: SECUR32.DLL DateTime: 29-Apr-1998 FileVersion: 4.10.1998 (original distribution) SECUR32.DLL DateTime: 27-Mar-1999 FileVersion: 4.10.2177 (from some upgrade) SECUR32.DLL DateTime: 23-Apr-1999 FileVersion: 4.10.2222 (Win98SE) I have not been able to check WinME version(s). Appropriate patching of php_imap.dll's import table to eliminate the problem references produces an image that loads properly and provides imap function on my Win98 systems. One hopes a better solution can be provided. Previous Comments: ------------------------------------------------------------------------ [2004-05-22 18:58:12] sanondysie at tc17 dot com Description: ------------ This problem seems to present itself only on Win98 systems (possibly on other Win9x as well). I have tested this on an almost-out-of-the-box Win98 system as well a Win98 system with all the latest MS patches including MSIE 6.0 SP1; symptoms are identical. Systems ARE able to use the curl extension; systems ARE able to use the gd2 extension. Systems are NOT able to use the IMAP extension. There are many Usenet messages about this problem as well; there doesn't seem to be any solution that has been shown to work. Symptoms can be demonstrated by either: 1) configure imap with php.ini, or 2) <?php dl ("php_imap.dll"); ?> The error message returned is something like: Unable to load dynamic library ...php_imap.dll - A device attached to the system is not functioning. A little bit more analysis with \windows\system\regsvr32 gives: LoadLibrary ...php_imap.dll failed GetLastError returns 0x0000001f. The 0x1f (31) error maps to "device attached to the system is not functioning" is apparently a catch-all for errors for which the original programmers could not be bothered supplying details. However, this is NOT the error shown for missing DLLs (that's a 0x4xx error); Analysis with scanbin (available from: http://www.bellamyjc.net/) seems to show that there are two presumed problems with calls: KERNEL32: LoadLibrarya KERNEL32: GetProcAddress The conclusion seems to be that the problem is inherent in php_imap.dll itself, possibly the way in which is is built; possibly some subtle API interface problem (with KERNEL32), a difference between Win9x and WinNT kernels? ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=28493&edit=1
