Ответ 1
Мне НЕОБХОДИМО перезапустить сервер! И теперь это работает! Doh.. Спасибо за вклад каждогоbodys.
Мне нужна помощь в том, как: Включить PCNTL в Ubuntu PHP.
$ mkdir /tmp/phpsource
$ cd /tmp/phpsource
$ wget http://museum.php.net/php5/php-5.3.2.tar.gz
$ tar xvf php-5.3.2.tar.gz
$ cd php-5.3.2/ext/pcntl
$ phpize -bash: phpize: command not found
Все прошло нормально, пока я не попытался запустить phpize! А потом я получаю ошибку '- bash: phpize: command not found'?? Любые идеи?
UPDATE ran:
$ sudo apt-get update
а затем выполните:
$ sudo apt-get install php5-dev
С помощью Ника мне удалось закончить процедуру. Но "сделать тест" не удается?
$ phpize
$ ./configure
$ make
$ cp modules/pcntl.so /usr/lib/php5/20090626/
$ echo "extension=pcntl.so" > /etc/php5/conf.d/pcntl.ini
$ make test - FAILED!
ПОМОЩЬ: Я набрал расширение "echo" = pcntl.so > /etc/php5/conf.d/pcntl.ini 'вместо расширения "echo" = pcntl.so" > /etc/php5/conf.d/pcntl.ini 'в первый раз, когда я запустил это. Это BAD?
--------------------------------- Сделать сообщения об ошибках TEst ---------- ----------------------------
PHP Deprecated: Comments starting with '#' are deprecated in /tmp/phpsource/php-5.3.2/ext/pcntl/tmp-php.ini on line 1850 in Unknown on line 0
PHP Deprecated: Comments starting with '#' are deprecated in /tmp/phpsource/php-5.3.2/ext/pcntl/tmp-php.ini on line 1852 in Unknown on line 0
PHP Deprecated: Comments starting with '#' are deprecated in /tmp/phpsource/php-5.3.2/ext/pcntl/tmp-php.ini on line 1850 in Unknown on line 0
PHP Deprecated: Comments starting with '#' are deprecated in /tmp/phpsource/php-5.3.2/ext/pcntl/tmp-php.ini on line 1852 in Unknown on line 0
PHP Warning: Module 'pcntl' already loaded in Unknown on line 0
Warning: Module 'pcntl' already loaded in Unknown on line 0
PHP Deprecated: Comments starting with '#' are deprecated in /tmp/phpsource/php-5.3.2/ext/pcntl/tmp-php.ini on line 1850 in Unknown on line 0
PHP Deprecated: Comments starting with '#' are deprecated in /tmp/phpsource/php-5.3.2/ext/pcntl/tmp-php.ini on line 1852 in Unknown on line 0
PHP Warning: Module 'pcntl' already loaded in Unknown on line 0
Warning: Module 'pcntl' already loaded in Unknown on line 0
=====================================================================
PHP : /usr/bin/php
PHP_SAPI : cli
PHP_VERSION : 5.3.2-1ubuntu4.18
ZEND_VERSION: 2.3.0
PHP_OS : Linux - Linux lvps217-8-253-63.vps.webfusion.co.uk 2.6.32-042stab068.8 #1 SMP Fri Dec 7 17:06:14 MSK 2012 x86_64
INI actual : /tmp/phpsource/php-5.3.2/ext/pcntl/tmp-php.ini
More .INIs :
CWD : /tmp/phpsource/php-5.3.2/ext/pcntl
Extra dirs :
VALGRIND : Not used
=====================================================================
TIME START 2013-01-02 23:05:56
=====================================================================
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 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-01-02 23:05:59
=====================================================================
TEST RESULT SUMMARY
---------------------------------------------------------------------
Exts skipped : 0
Exts tested : 44
---------------------------------------------------------------------
Number of tests : 14 14
Tests skipped : 0 ( 0.0%) --------
Tests warned : 0 ( 0.0%) ( 0.0%)
Tests failed : 14 (100.0%) (100.0%)
Expected fail : 0 ( 0.0%) ( 0.0%)
Tests passed : 0 ( 0.0%) ( 0.0%)
---------------------------------------------------------------------
Time taken : 3 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]
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]
ЛЮБЫЕ идеи!?! Карл
Мне НЕОБХОДИМО перезапустить сервер! И теперь это работает! Doh.. Спасибо за вклад каждогоbodys.
Вот что я нашел в Ubuntu 12.04:
Проверьте, что ваш PHP.ini для отключенных функций pnctl.
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_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority
phpinfo сообщает, что функция уже загружена, но на самом деле она не работает, не помещая файл pcntl.ini в /etc/php 5/conf.d.
К сожалению, это приводит к тому, что ошибки модуля уже загружаются каждый раз при очистке сеанса PHP-сессии в /etc/cron.d, но PCNTL не будет работать без обоих этих элементов на месте, и до сих пор у меня не было нашел хорошее решение для отключения "уже загруженной" ошибки. Его грязный и уродливый, и спам моей корневой почты, и когда я смогу найти решение, я отправлю его. Я только столкнулся с этой проблемой в 12.04.
ОБНОВЛЕНИЕ
Я взломал файл my/usr/lib/php5/maxlifetime script, чтобы остановить спам с ошибками pnctl (PHP Warning: Module 'pcntl' уже загружен в Unknown в строке 0). Вот мои изменения - я специально добавил в строку "E_DEPRECATED", чтобы успокоить сообщения.
Строка 8:
cur=$(php5 -c /etc/php5/${sapi}/php.ini -d "error_reporting='E_ALL & ~E_DEPRECATED'" -r 'print ini_get("session.gc_maxlifetime");' 2> /dev/null)
Есть несколько этапов: (моя ОС - debian7.2 xfce x86).
1: я устанавливаю pcntl как это
#mkdir php
#cd php
#apt-get source php5
#cd php5-5.4.4/ext/pcntl
#phpize
#./configure
#make
#echo "extension=pcntl.so" > /etc/php5/mods-available/pcntl.ini
#ln -s /etc/php5/mods-available/pcntl.ini /etc/php5/conf.d/pcntl.ini
2: при перезапуске nginx или apache2 php получает одно предупреждение.
"PHP Warning: Module 'pcntl уже загружен в Unknown в строке 0"
3: так что i
"rm -rf/etc/php5/mods-available/pcntl.ini и /etc/php 5/conf.d/pcntl.ini"
4: отредактируйте файл "php.ini".
a.apache2, it in "/etc/php5/apache2/php.ini" b.cgi like nginx,it in "/etc/php5/cgi/php.ini"
сделайте
"disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited..."
comments, add " ; " in front of "disable_functions".
перезагрузите сервер, и предупреждение исчезло. Удачи.
На моей машине dev с ubuntu 12.10 (и более ранними версиями тоже) pcntl уже включен.
$ php -m | grep pcntl
pcntl
Я предполагаю, что проблема:
Предупреждение PHP: модуль 'pcntl' уже загружен в Unknown в строке 0
Так что просто не устанавливайте его снова.
В Ubuntu 15.04, pcntl устанавливается в CLI php, но по умолчанию отключен. Чтобы включить, отредактируйте /etc/php 5/cli/php.ini и закомментируйте строку:
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_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
Если вы хотите, чтобы они были активированы в apache2, отредактируйте файл /etc/php 5/apache2/php.ini и выполните те же изменения.
Может быть целесообразно только удалить функции, которые вам нужно использовать, чтобы сохранить как можно больше ограничений безопасности.