From:             bruno dot premont at restena dot lu
Operating system: Linux
PHP version:      5.4.17
Package:          FPM related
Bug Type:         Bug
Bug description:PHP-5.4.x and PHP-5.5.x extensions single-shot when loaded 
per-pool

Description:
------------
Loading extensions on a per-pool basis make the extension usable only a
single time per worker process.
Loading the extension globally for PHP via php.ini works fine.

Working setup:
php.ini:
  extension=radius.so

Failing setup:
php-fpm.conf
  [pool]
  php_admin_value[extension] = radius.so


On failing setup following test-script fails with radius_auth_open:
undefined function for second request. Easiest testing is pm=ondemand, long
enough pm.process_idle_timeout and two subsequent requests. First request
works, second one fails. The module is still reported as loaded and its
functions are still returned by get_extension_funcs() even though they are
undefined.

Test script:
---------------
<?php
date_default_timezone_set('Europe/Luxembourg');
header('Content-Type: text/plain; charset=UTF-8');

printf("Checking for 'radius' extension: %s\n", extension_loaded('radius')
? 'loaded' : 'missing');

$fa = get_extension_funcs('radius');
printf("Checking for 'radius' extension functions:%d\n", $fa === false ? -1
: count($fa));
if ($fa !== false)
        foreach ($fa as $faf)
                printf("\t%s(): %s\n", $faf, function_exists($faf) ?
'exists' : 'missing');

flush();

printf("Calling radius_auth_open():\n");flush();
$rh = function_exists('radius_auth_open') ? radius_auth_open() : false;
printf("\t%s\n", $rh === false ? 'false' : 'resource');

if ($rh) {
        // use $rh
        ...
        printf("Calling radius_close()\n");flush();
        $r = radius_close($rh);
        printf("\t%s\n", $r === true ? 'success' : 'failed');
}
?>

Expected result:
----------------
The radius functions should be usable for each request and not only the
ones that happens to be the first request processed by the respective
worker.

Actual result:
--------------
First request works, second and subsequent requests to same worker process
fail with undefined function on any call to extension functions.

extension_loaded() and get_extension_funcs() still return same information
for subsequent requests as they do for the first request.

-- 
Edit bug report at https://bugs.php.net/bug.php?id=65277&edit=1
-- 
Try a snapshot (PHP 5.4):   
https://bugs.php.net/fix.php?id=65277&r=trysnapshot54
Try a snapshot (PHP 5.3):   
https://bugs.php.net/fix.php?id=65277&r=trysnapshot53
Try a snapshot (trunk):     
https://bugs.php.net/fix.php?id=65277&r=trysnapshottrunk
Fixed in SVN:               https://bugs.php.net/fix.php?id=65277&r=fixed
Fixed in release:           https://bugs.php.net/fix.php?id=65277&r=alreadyfixed
Need backtrace:             https://bugs.php.net/fix.php?id=65277&r=needtrace
Need Reproduce Script:      https://bugs.php.net/fix.php?id=65277&r=needscript
Try newer version:          https://bugs.php.net/fix.php?id=65277&r=oldversion
Not developer issue:        https://bugs.php.net/fix.php?id=65277&r=support
Expected behavior:          https://bugs.php.net/fix.php?id=65277&r=notwrong
Not enough info:            
https://bugs.php.net/fix.php?id=65277&r=notenoughinfo
Submitted twice:            
https://bugs.php.net/fix.php?id=65277&r=submittedtwice
register_globals:           https://bugs.php.net/fix.php?id=65277&r=globals
PHP 4 support discontinued: https://bugs.php.net/fix.php?id=65277&r=php4
Daylight Savings:           https://bugs.php.net/fix.php?id=65277&r=dst
IIS Stability:              https://bugs.php.net/fix.php?id=65277&r=isapi
Install GNU Sed:            https://bugs.php.net/fix.php?id=65277&r=gnused
Floating point limitations: https://bugs.php.net/fix.php?id=65277&r=float
No Zend Extensions:         https://bugs.php.net/fix.php?id=65277&r=nozend
MySQL Configuration Error:  https://bugs.php.net/fix.php?id=65277&r=mysqlcfg

Reply via email to