我需要帮助如何:在Ubuntu PHP中启用PCNTL。
$ 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”? 有任何想法吗?
更新跑了:
$ sudo apt-get update
然后跑:
$ sudo apt-get install php5-dev
在尼克的帮助下,我设法完成了这个程序。 但“做testing”失败?
$ phpize $ ./configure $ make $ cp modules/pcntl.so /usr/lib/php5/20090626/ $ echo "extension=pcntl.so" > /etc/php5/conf.d/pcntl.ini $ make test - FAILED!
帮助:我input'echo'extension = pcntl.so> /etc/php5/conf.d/pcntl.ini'而不是'echo'extension = pcntl.so“> /etc/php5/conf.d/pcntl.ini “我第一次跑这个,是不是?
———————————使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]
有任何想法吗!?! 卡尔
以下是我在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/php5/conf.d中,它实际上不会工作。
不幸的是,这会导致每次在/etc/cron.d中执行PHP会话清理过程中的“模块已经加载”错误,但是如果没有这两个部分,PCNTL将无法运行,到目前为止,我还没有找到一个好的解决方案来禁用“已经加载”的错误。 它杂乱,丑陋,垃圾邮件我的根邮件,当我能找到一个解决方案,我会张贴它。 到目前为止,我只在12.04遇到这个问题。
UPDATE
我砍了我的/ usr / lib / php5 / maxlifetime脚本文件,以防止发生pnctl错误( PHP警告:模块'pcntl'已经加载在未知的行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警告:模块'pcntl'已经加载在未知的行0”
3:所以我
“rm -rf /etc/php5/mods-available/pcntl.ini和/etc/php5/conf.d/pcntl.ini”
4:编辑“php.ini”文件。
a.apache2, it's in "/etc/php5/apache2/php.ini" b.cgi like nginx,it's 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".
重新启动你的服务器,警告没有了,好运气。
在我的开发机器与Ubuntu 12.10(和更早的版本)pcntl是/已经启用。
$ php -m | grep pcntl pcntl
我想这就是问题所在:
PHP警告:模块'pcntl'已经加载在第0行的未知
所以只是不要再安装它。
我需要重新启动服务器! 现在它工作! Do ..感谢每一个输入。
在Ubuntu 15.04中,pcntl安装在php CLI中,但在默认情况下是禁用的。 要启用,请编辑/etc/php5/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/php5/apache2/php.ini并进行相同的更改。
为了尽可能地保留安全限制,最好只删除你需要使用的功能。