Hi,
ich hatte unter PHP 5.3 ein Script laufen, welches ohne Probleme lief. Nach Umstellung auf Debian 6 und damit auf PHP 5.4 erhalte ich eine Fehlermeldung. Kann mir bitte einer sagen, warum das nicht mehr geht, und/oder was ich besser machen kann?
Das Script hier mal auf das Wesentliche reduziert:
	
Wenn ich es in der Shell wie folgt ausführe 
	dann erhalte ich die Meldung: 
	Wenn ich Zeile 15 wie folgt ändere, dann klappt es:
	
Aber: Ist das so richtig?
							
						
					ich hatte unter PHP 5.3 ein Script laufen, welches ohne Probleme lief. Nach Umstellung auf Debian 6 und damit auf PHP 5.4 erhalte ich eine Fehlermeldung. Kann mir bitte einer sagen, warum das nicht mehr geht, und/oder was ich besser machen kann?
Das Script hier mal auf das Wesentliche reduziert:
PHP-Code:
	
	
<?php
class MyClass
{
    public function __construct()
    {
        $this->my_external_handler = 'my_external_user_function';
        declare(ticks = 1);
        pcntl_signal(SIGINT, array($this, "signal_handler"));
    }
    
    public function signal_handler($signal_number)
    {
        $this->info = "signal $signal_number caught";
        call_user_func($this->my_external_handler, $this);
    }
}
ini_set("display_errors", 1); 
ini_set("error_reporting", E_ALL);
$TestClass = new MyClass;
$i = 10;
while($i--) {
    echo("Waiting $i seconds for SIGINT (CONTROL+C) ...\n");
    sleep(1);
}
function my_external_user_function(&$data)
{
    echo("info: '".$data->info."'\n");
    exit;
}
  
?>
Code:
	
	php test.php
Code:
	
	Parameter 1 to my_external_user_function() expected to be a reference, value given in /var/lib/asterisk/agi-bin/test.php on line 15
PHP-Code:
	
	
call_user_func($this->my_external_handler, &$this); 
 
          
 Moderatorin
 Moderatorin

Kommentar