it-swarm.com.de

pcntl funktioniert aus Sicherheitsgründen nicht auf Ubuntu

Ich habe pcntl auf meinem PHP 5.4.6 installiert, das unter Ubuntu 32-Bit 12.10 ausgeführt wird. Verwenden Sie dazu this article.

Es lief überhaupt nicht reibungslos, weil ich nach dem Kompilieren beim Ausführen von make test die folgenden Fehler bekam. Ich erhalte jedes Mal eine Warnung, wenn ich versuche, einen untergeordneten Prozess auszulösen, der besagt:

Warnung: pcntl_fork () wurde aus Sicherheitsgründen in /var/www/mydev/dev/mailServiceTest.php in Zeile 8 deaktiviert

Ich habe im ganzen Web nach einer Lösung gesucht, aber leider habe ich dieses Problem nirgendwo anders erwähnt.

    Build complete.
Don't forget to run 'make test'.
PHP Warning:  Module 'pcntl' already loaded in Unknown on line 0
PHP Warning:  Module 'pcntl' already loaded in Unknown on line 0

=====================================================================
PHP         : /usr/bin/php 
Warning: Module 'pcntl' already loaded in Unknown on line 0

PHP_SAPI    : cli
PHP_VERSION : 5.4.6-1ubuntu1.2
ZEND_VERSION: 2.4.0
PHP_OS      : Linux - Linux oleg-Lenovo-G580 3.5.0-26-generic #42-Ubuntu SMP Fri Mar 8 23:20:06 UTC 2013 i686
INI actual  : /php/php-5.4.6/ext/pcntl/tmp-php.ini
More .INIs  :  
CWD         : /php/php-5.4.6/ext/pcntl
Extra dirs  : 
VALGRIND    : Not used
=====================================================================
TIME START 2013-04-28 12:11:03
=====================================================================
FAIL Test pcntl wait functionality [tests/001.phpt] 
FAIL pcntl: pcntl_sigprocmask(), pcntl_sigwaitinfo(), pcntl_sigtimedwait() [tests/002.phpt] 
FAIL pcntl: SIG_BLOCK, SIG_UNBLOCK, SIG_SETMASK [tests/003.phpt] 
FAIL Bug #47566 (return value of pcntl_wexitstatus()) [tests/bug47566.phpt] 
FAIL pcntl_alarm() [tests/pcntl_alarm.phpt] 
FAIL pcntl_exec() [tests/pcntl_exec.phpt] 
FAIL pcntl_exec() 2 [tests/pcntl_exec_2.phpt] 
FAIL pcntl_exec() 3 [tests/pcntl_exec_3.phpt] 
FAIL Test function pcntl_fork() by calling it with its expected arguments [tests/pcntl_fork_basic.phpt] 
FAIL Test function pcntl_fork() by testing the process isolation in the forking hierarchy father -> son -> grandson where father can not knows his grandson [tests/pcntl_fork_variation.phpt] 
FAIL Test pcntl_get_last_error() [tests/pcntl_get_last_error.phpt] 
FAIL pcntl_signal() [tests/pcntl_signal.phpt] 
FAIL pcnt_signal_dispatch() [tests/pcntl_signal_dispatch.phpt] 
FAIL pcntl_wait() [tests/pcntl_wait.phpt] 
FAIL Closures as a signal handler [tests/signal_closure_handler.phpt] 
=====================================================================
TIME END 2013-04-28 12:11:07

=====================================================================
TEST RESULT SUMMARY
---------------------------------------------------------------------
Exts skipped    :    0
Exts tested     :   44
---------------------------------------------------------------------

Number of tests :   15                15
Tests skipped   :    0 (  0.0%) --------
Tests warned    :    0 (  0.0%) (  0.0%)
Tests failed    :   15 (100.0%) (100.0%)
Expected fail   :    0 (  0.0%) (  0.0%)
Tests passed    :    0 (  0.0%) (  0.0%)
---------------------------------------------------------------------
Time taken      :    4 seconds
=====================================================================

=====================================================================
FAILED TEST SUMMARY
---------------------------------------------------------------------
Test pcntl wait functionality [tests/001.phpt]
pcntl: pcntl_sigprocmask(), pcntl_sigwaitinfo(), pcntl_sigtimedwait() [tests/002.phpt]
pcntl: SIG_BLOCK, SIG_UNBLOCK, SIG_SETMASK [tests/003.phpt]
Bug #47566 (return value of pcntl_wexitstatus()) [tests/bug47566.phpt]
pcntl_alarm() [tests/pcntl_alarm.phpt]
pcntl_exec() [tests/pcntl_exec.phpt]
pcntl_exec() 2 [tests/pcntl_exec_2.phpt]
pcntl_exec() 3 [tests/pcntl_exec_3.phpt]
Test function pcntl_fork() by calling it with its expected arguments [tests/pcntl_fork_basic.phpt]
Test function pcntl_fork() by testing the process isolation in the forking hierarchy father -> son -> grandson where father can not knows his grandson [tests/pcntl_fork_variation.phpt]
Test pcntl_get_last_error() [tests/pcntl_get_last_error.phpt]
pcntl_signal() [tests/pcntl_signal.phpt]
pcnt_signal_dispatch() [tests/pcntl_signal_dispatch.phpt]
pcntl_wait() [tests/pcntl_wait.phpt]
Closures as a signal handler [tests/signal_closure_handler.phpt]
=====================================================================

You may have found a problem in PHP.
This report can be automatically sent to the PHP QA team at
http://qa.php.net/reports and http://news.php.net/php.qa.reports
This gives us a better understanding of PHP's behavior.
If you don't want to send the report immediately you can choose
option "s" to save it.  You can then email it to [email protected] later.
Do you want to send this report now? [Yns]: y

Please enter your email address.
(Your address will be mangled so that it will not go out on any
mailinglist in plain text): [email protected] 

Posting to http://qa.php.net/buildtest-process.php

Thank you for helping to make PHP better.
[email protected]:/php/php-5.4.6/ext/pcntl$ version

Bei der Eingabe des folgenden Befehls scheint PHP tatsächlich bereits installiert zu sein, obwohl der PHP -Interpreter die Funktion vor der Installation dieser Erweiterung überhaupt nicht erkannt hat:

[email protected]:/php/php-5.4.6/ext/pcntl$ php -m | grep pcntl
PHP Warning:  Module 'pcntl' already loaded in Unknown on line 0
pcntl

Wie kann ich diese Funktion so konfigurieren, dass sie ordnungsgemäß funktioniert?

20
Oleg Belousov

Sudo gedit

Sudo gedit /etc/php5/cli/php.ini

oder und

Sudo gedit /etc/php5/Apache2/php.ini find:

disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl

Kommentiere dies aus:

;disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl
40
Oleg Belousov

Ich hatte auch dieses Problem. Ubuntu wird mit einigen PHP Beispielkonfigurationsdateien in /usr/share/php5 ausgeliefert: php.ini-production ist die Vorlage für den Apache-Webserver PHP config (/etc/php5/Apache2/php.ini) und deaktiviert pcntl_fork und andere Funktionen. php.ini-production.cli ist die Vorlage für PHP, die über die Befehlszeile (/etc/php5/cli/php.ini) ausgeführt wird, auch wenn Sie Tests ausführen, und deaktiviert keine Funktionen. Aber irgendwie war mein /etc/php5/cli/php.ini eine Kopie der Apache-Konfiguration, die diese Funktionen deaktiviert.

Ich bin nicht sicher, wie das passiert ist. Ich habe meinen LAMP-Stack mit Ubuntu 12.04 installiert. Meine /etc/php5/cli/php.ini-Datei vom Oktober 2013 schlägt vor, Ubuntu 13.10 einzurichten. Vielleicht hat diese Version die falsche Datei kopiert. Ubuntu-Upgrades aktualisieren die Beispieldateien in /usr/share/php5, lassen die Dateien in /etc/ jedoch in Ruhe.

Um das Problem zu beheben, habe ich verwendet

$ Sudo cp -pi /usr/share/php5/php.ini-production.cli /etc/php5/cli/php.ini

kopieren der Standardbefehlszeileneinstellungsdatei. Wenn Sie Änderungen an den PHP5-Einstellungen in der Befehlszeile vorgenommen haben, werden diese überschrieben. Verwenden Sie Ihre UNIX-Kenntnisse, um sie zu vergleichen und zusammenzuführen.

0
skierpage