Edit report at http://bugs.php.net/bug.php?id=48819&edit=1

 ID:                 48819
 Updated by:         cy...@php.net
 Reported by:        pkwan at advsofteng dot net
 Summary:            dl function is undefined
-Status:             Bogus
+Status:             Re-Opened
 Type:               Bug
 Package:            Scripting Engine problem
 Operating System:   Windows
 PHP Version:        5.3.0
 Block user comment: N

 New Comment:

this bug is not bogus.  it's either valid or should be reclassified as a
documentation bug.  the manual says (as of August 16, 2010):



5.3.0    dl() is now disabled in some SAPI's due to stability issues.
The only SAPI's that allow dl() are: CLI, CGI and Embed.



in fact, a peek at php-5.3.3/ext/standard/dl.c suggests that the manual
is quite misleading as it leaves the reader thinking that dl() will work
in non-TS versions of CLI, CGI and Embed just find, when in fact the
function is E_DEPRECATED across the board:



        if ((strncmp(sapi_module.name, "cgi", 3) != 0) &&

                (strcmp(sapi_module.name, "cli") != 0) &&

                (strncmp(sapi_module.name, "embed", 5) != 0)

        ) {

#ifdef ZTS

                php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not supported in
multithreaded Web servers - use extension=%s in your php.ini",
filename);

                RETURN_FALSE;

#else

                php_error_docref(NULL TSRMLS_CC, E_DEPRECATED, "dl() is 
deprecated -
use extension=%s in your php.ini", filename);

#endif

        }





that's correct as long as i run php-cgi.exe on the command line:



  var_dump(extension_loaded('sqlsrv'));

  dl('php_sqlsrv.dll');

  var_dump(extension_loaded('sqlsrv'));



run with



  php-cgi -nq -d extension_dir=$somewhere -d error_reporting=-1
test.php



gives



  bool(false)

  bool(true)



however, running the same php-cgi inside Apache 2.2 on Windows, the dl()
function does not exist.



tested with 5.3.3-nts-vc9.


Previous Comments:
------------------------------------------------------------------------
[2009-07-06 17:32:18] pkwan at advsofteng dot net

This is definitely a bug. According to PHP 5.3 documentation, dl should
work, at least for CLI, CGI and Embed. Pease read the PHP
documentation.



The PHP 5.3 documentation for "dl" says:



This function now throws an E_DEPRECATED notice on all sapi's except for
CLI, CGI and Embed. 



Also, the PHP 5.3 change log "http://www.php.net/ChangeLog-5.php"; says:



Changed dl() to be disabled by default. Enabled only when explicitly
registered by the SAPI. Currently enabled with cli, cgi and embed SAPIs.
(Dmitry) 



So the above clearly says dl should work on CLI, CGI and Embed SAPI. I
am testing using CGI, and it does not work. Therefore it is a bug.



Furthermore, from the PHP documentation on dl, the E_DEPRECATED is only
a "notice", not an error. So dl should work in all other SAPI as well.

------------------------------------------------------------------------
[2009-07-06 16:24:10] j...@php.net

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



------------------------------------------------------------------------
[2009-07-06 16:07:01] dani88elx at gmail dot com

This is not a bug.



dl() is deprecated from 5.3 version

------------------------------------------------------------------------
[2009-07-06 15:50:30] pkwan at advsofteng dot net

Description:
------------
Using the "dl" function results in a "Call to undefined function dl()"
error if the PHP is used with a web server. It is as if the "dl"
function does not exist in PHP any more. This has been tested using
"php-cgi.exe" VC6 and on IIS on both Windows 2000 and Windows XP, and
using "php-cgi.exe" VC9 on IIS on Windows XP.



However, when using "php.exe" or "php-cgi.exe" in a DOS shell
interactively, the "dl" function works normally.





Reproduce code:
---------------
<?php dl("any_name.dll"); ?>



Expected result:
----------------
If the DLL is loaded successfully, no message is expected. Otherwise,
some meaningful error message is expected. 

Actual result:
--------------
Fatal error: Call to undefined function dl() in
C:\Inetpub\Scripts\phpinfo.php on line 1




------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=48819&edit=1

Reply via email to