web-dev-qa-db-ja.com

UbuntuでPCNTLを有効にするPHP-テストが失敗する

方法についてのヘルプが必要です:UbuntuPHPで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

ニックの助けを借りて、私はなんとか手順を終えることができました。しかし、「テストを行う」は失敗しますか?

$ 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 "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]

何か案は!?!カール

10
Folding Circles

これが私がUbuntu12.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に配置しないと実際には機能しません。

残念ながら、これにより、PHP /etc/cron.dのセッションクリーンアップcronが開始されるたびに、「モジュールはすでにロードされています」エラーが発生しますが、PCNTLは、これらの両方が適切に配置されていないと機能しません。これまでのところ、「すでにロードされています」エラーを無効にするための適切な解決策は見つかりませんでした。その厄介で醜い、ルートメールをスパムします。解決策が見つかったら、投稿します。これまでの12.04でのこの問題。

[〜#〜]更新[〜#〜]

/ usr/lib/php5/maxlifetimeスクリプトファイルをハッキングして、pnctlエラーによるスパムを停止しました(PHP警告:モジュール 'pcntl'はすでに0行目のUnknownにロードされています)。これが私の編集です-メッセージを静めるために「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)

このようないくつかのステップがあります:(私のOSはdebian7.2xfce 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に警告が1つ表示されます。

「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".

サーバーを再起動すると、警告が消えます。頑張ってください。

7
rainysia

Ubuntu 12.10(および以前のバージョンも)を搭載した私の開発マシンでは、pcntlはすでに有効になっています。

$ php -m | grep pcntl
pcntl

私はそれが問題だと思います:

PHP警告:モジュール 'pcntl'はすでに0行目の不明にロードされています

したがって、再度インストールしないでください。

4
KingCrunch

サーバーを再起動する必要があります!そして今、それは機能します! Doh ..皆さんのご意見ありがとうございます。

1
Folding Circles

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を編集して、同じ変更を加えます。

可能な限り多くのセキュリティ制限を維持するために、使用する必要のある機能のみを削除することをお勧めします。

0
tigs001