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);
Kommentar