this の記事を使用して、Ubuntu32ビット12.10で実行されているPHP 5.4.6)にpcntlをインストールしました。
コンパイル後にmake test
を実行すると、次のエラーが発生したため、スムーズに実行できませんでした。次のような子プロセスをフォークしようとするたびに警告が表示されます。
警告:pcntl_fork()は、セキュリティ上の理由により、8行目の/var/www/mydev/dev/mailServiceTest.phpで無効になっています
私は解決策をウェブ全体で検索しましたが、残念ながら、この問題についての言及は他のどこにも見つかりませんでした。
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.
oleg@oleg-Lenovo-G580:/php/php-5.4.6/ext/pcntl$ version
次のコマンドを入力すると、PHPは実際にすでにインストールされているようですが、この拡張機能をインストールする前にPHPインタープリターは関数を認識しませんでしたが、 :
oleg@oleg-Lenovo-G580:/php/php-5.4.6/ext/pcntl$ php -m | grep pcntl
PHP Warning: Module 'pcntl' already loaded in Unknown on line 0
pcntl
この機能が正しく機能するように構成するにはどうすればよいですか?
Sudo gedit
Sudo gedit /etc/php5/cli/php.ini
または
Sudo gedit /etc/php5/Apache2/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
これをコメントアウトする:
;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
私もこの問題を抱えていました。 Ubuntuには、_/usr/share/php5
_にいくつかのサンプルPHP構成ファイルが付属しています。_php.ini-production
_は、ApacheWebサーバーPHP config(_/etc/php5/Apache2/php.ini
_)およびpcntl_forkおよびその他の機能を無効にします。 _php.ini-production.cli
_は、テストの実行時を含め、コマンドラインから実行するPHPのテンプレートであり(_/etc/php5/cli/php.ini
_)、関数を無効にすることはありません。しかし、どういうわけか私の_/etc/php5/cli/php.ini
_は、これらの機能を無効にするApache構成のコピーでした。
どうしてこうなったのかよくわかりません。 Ubuntu12.04でLAMPスタックをインストールしました。 2013年10月付けの私の_/etc/php5/cli/php.ini
_ファイルは、Ubuntu13.10がセットアップしたことを示唆しています。そのリリースが間違ったファイルをコピーした可能性があります。 Ubuntuのアップグレードでは、_/usr/share/php5
_のサンプルファイルを更新しますが、_/etc/
_のファイルはそのままにしておきます。
それを修正するために私は使用しました
_$ Sudo cp -pi /usr/share/php5/php.ini-production.cli /etc/php5/cli/php.ini
_
デフォルトのコマンドライン設定ファイルをコピーします。明らかに、コマンドラインのPHP5設定に変更を加えた場合、これによりそれらが上書きされます。 UNIXスキルを使用して、それらを差分およびマージします。