Ошибка системного демона PHP PCNTL... но PCNTL установлен

Я взял на себя проект, и я пытаюсь заставить его работать на моем сервере.... хотя у меня, похоже, возникла следующая проблема с System Daemon (код ниже)

У меня установлен pcntl:

php -i |grep pcnt
pcntl
pcntl support => enabled

Так что не уверен, почему я получаю эту ошибку. Кто-нибудь может увидеть, что я делаю не так?

Любые предложения будут ценны!

Спасибо!

queue.php (браузер)

#!/usr/bin/php -q 

Fatal error: Uncaught System_Daemon_Exception:

PHP is compiled without --enable-pcntl directive in 
/home/***/public_html/videoenc/scripts/tools/videoserver/queue.php on line 66 

Exception trace # Function Location 0 System_Daemon::start()
/home/***/public_html/videoenc/scripts/tools/videoserver/queue.php:66 

1 {main

thrown in /usr/local/lib/php/System/Daemon.php on line 551

queue.php (код)

#!/usr/bin/php -q

<? @set_time_limit(0);

define("DB_FORCE_USE_RW_SERVER", 1);

require_once(realpath(dirname(__FILE__) . "/../../common.inc.php"));

require_once "System/Daemon.php";

// Allowed arguments and their defaults
$runmode = array(
    'no-daemon' => false,
    'help' => false,
    'write-initd' => false,
);

if(gettype($argv) != 'NULL')
{
    foreach ($argv as $k => $arg)
    {
        if (substr($arg, 0, 2) == '--' && isset($runmode[substr($arg, 2)]))
            $runmode[substr($arg, 2)] = true;
    }


}

// Help mode. Shows allowed arguments.
if ($runmode['help'] == true)
{
    echo 'Usage: ' . $argv[0] . "' [runmode]\n";
    echo "Available runmodes:\n";

    foreach ($runmode as $runmod => $val)
    {
       echo ' --'. $runmod . "\n";
    }

    die();
}

// Setup
$options = array(
    'appName' => 'videoenc-queue',
    'appDir' => dirname(__FILE__),
    'appDescription' => 'Manages the video encoding queue.',
    'authorName' => 'Dave',
    'authorEmail' => 'dave@***',
    'sysMaxExecutionTime' => '0',
    'sysMaxInputTime' => '0',
    'sysMemoryLimit' => '1024M',
    'appRunAsGID' => 2000,
    'appRunAsUID' => 2000,
    'appPidLocation' => '/home/***/public_html/videoenc/daemon/run/videoenc-queue/videoenc-queue.pid',
    'logLocation' => '/home/***/public_html/videoenc/daemon/log/videoenc-queue.log'
);

System_Daemon::setOptions($options);

// This program can also be run in the foreground with runmode --no-daemon

if (!$runmode['no-daemon'])
{
    // Spawn Daemon
    System_Daemon::start();
}

1 ответ

Решение

Пакет PHP System_Daemon можно использовать только в сценарии командной строки. Его нельзя использовать в сценариях, запускаемых с веб-сервера, что, по-видимому, и используется здесь.

Другие вопросы по тегам