2011-09-15 18 views
10

Instalé gearman en ubuntu 10.04 recientemente e instalé su extensión pecl. Ahora, cuando corro un archivo PHP en el navegador que contiene:Gearman, php problema de extensión: Class 'GearmanWorker' no se encuentra en .. using terminal pero funciona en el navegador

$client = new GearmanWorker(); 
die(var_Dump($client)); 

me sale object(GearmanWorker)#1 (0) { }

pero cuando se ejecuta el archivo de un verdadero trabajador en el terminal (de raíz), me sale esto:

sudo php worker.php 
PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/imagick.ini on line 1 in Unknown on line 0 
PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/mcrypt.ini on line 1 in Unknown on line 0 
PHP Warning: Module 'pcntl' already loaded in Unknown on line 0 
PHP Fatal error: Class 'GearmanWorker' not found in /home/ME/public_html/try/worker.php on line 3 

El código trabajador:

#!/usr/bin/php 
<?php $worker= new GearmanWorker(); 
$worker->addServer('127.0.0.1'); 
$worker->addFunction("reverse", "reverse_fn"); 
while (1) { 
    print "Waiting for job...\n"; 
    $ret = $worker->work(); 
    if ($worker->returnCode() != GEARMAN_SUCCESS) 
     break; 
} 
function reverse_fn ($job) 
{ 
    $workload = $job->workload(); 
    echo "Received 
job: " . $job->handle() . "\n"; 
    echo "Workload: $workload\n"; 
    $result = strrev($workload); 
    for ($i = 1; $i <= 10; $i ++) { 
     $job->status($i, 10); 
     sleep(1); 
    } 
    echo "Result: $result\n"; 
    return $result; 
} 

por favor ayuda!

+0

Do 'var_dump (get_include_path())' tanto en CLI como a través de CGI. Pueden diferir. – chelmertz

+0

lo siento, no entiendo lo que quiere decir, pero estoy instalando php como un módulo de apchae –

+0

que realmente se instaló utilizando el panel virtualmin –

Respuesta

13

Escriba php --ini en el símbolo del sistema para ver qué php.ini usa su CLI de PHP. Asegúrate de que Gearman esté habilitado en ese php.ini.

1
  1. Instalar el servidor de trabajo gearman y libgearman

    apt-get install gearman-trabajo-servidor libgearman-dev

  2. instalar la extensión PECL

    apt-get install php-pear php5-dev pecl install gearman

  3. Abra el archivo php.ini correcto y agregue extension=gearman.so al final.

2

utilizando locate php.ini en mi ubuntu programa de ordenador portátil 2 resultados:

/etc/php5/apache2/php.ini 
/etc/php5/cli/php.ini 

añadir tanto extension=gearman.so en 2 archivo php.ini reinicie php y gearmand trabajando ahora.

Cuestiones relacionadas