2012-12-31 23 views
10

Potrzebuję pomocy w jaki sposób: Włącz PCNTL w Ubuntu PHP.Włącz PCNTL w Ubuntu PHP - test kończy się niepowodzeniem

$ 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 

Wszystko poszło dobrze, dopóki nie spróbowałem uruchomić phpize! A potem pojawia się błąd "-bash: phpize: command not found" ?? Jakieś pomysły?

prowadził UPDATE:

$ sudo apt-get update 

a następnie prowadził:

$ sudo apt-get install php5-dev 

Z pomocą Nicka udało mi się zakończyć procedurę. Ale "make test" zawodzi?

$ phpize 
$ ./configure 
$ make 

$ cp modules/pcntl.so /usr/lib/php5/20090626/ 
$ echo "extension=pcntl.so" > /etc/php5/conf.d/pcntl.ini 

$ make test - FAILED! 

POMOC: Wpisałem 'echo „extension = pcntl.so> /etc/php5/conf.d/pcntl.ini' zamiast" echo "extension = pcntl.so">/etc/php5/conf.d/pcntl.ini "po raz pierwszy uruchomiłem to. Czy to ZŁE?

--------------------------- ------ Zrobić komunikaty o błędach 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] 

jakieś pomysły!?! Carl

+1

Czy używasz sudo? Spróbuj/usr/bin/phpize – Impulss

+2

Dlaczego to, co wpisałeś w monicie, mówi 'phpize', ale bash powraca z' phpsize'? –

+0

Dobry punkt @NickODell Był błąd w pisowni. Próbowałem go ponownie za pomocą phpize. Impulss Próbowałem tego! -bash:/usr/bin/phpize: Brak takiego pliku lub katalogu. Czy powinienem uruchomić to polecenie z katalogu/ext/pcntl /, to co robię? Dzięki –

Odpowiedz

1

POTRZEBUJĘ ponownie uruchomić serwer! A teraz działa! Doh .. Dzięki za opinie dla wszystkich.

+1

Restart Apache powinien wystarczyć. –

4

na moim dev maszyna z Ubuntu 12.10 (i wcześniejsze wersje) pcntl jest/była już włączona.

$ php -m | grep pcntl 
pcntl 

Chyba ów problem:

PHP Warning: Moduł 'PCNTL' już załadowany Unknown on line 0

Więc po prostu nie zainstalować go ponownie.

+0

jak to możliwe, że funkcje są nadal nie do wykorzystania w PHP? Jakieś pomysły? –

+0

Nie wiem, które funkcje chcesz użyć, więc może masz literówkę lub patrzysz na rozszerzenie wrog? Lub masz przestarzałą wersję PHP (cóż, 12.10 ma 5.4, więc to nie powinno być problemem)? – KingCrunch

8

Oto co znalazłem w Ubuntu 12.04:

  • Sprawdź php.ini dla funkcji pnctl jest wyłączone.

    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 donosi funkcja jest już załadowany, ale to nie będzie działać właściwie bez narażania plik pcntl.ini do /etc/php5/conf.d.

Niestety, powoduje to „moduł już załadowany” błędy za każdym razem porządki sesji PHP cron w /etc/cron.d startuje, ale PCNTL nie będzie działać bez obu tych elementów w miejscu, a tak daleko Nie znalazłem dobrego rozwiązania, aby wyłączyć błąd "już załadowany". To niechlujne i brzydkie, i wysyła moją pocztę główną, a kiedy znajdę rozwiązanie, opublikuję to. Problem ten pojawił się dopiero w 12.04.

UPDATE

I włamał się na moje/php5 plik/usr/lib/maxlifetime skryptu, aby zatrzymać spam z błędami pnctl (PHP Warning: Moduł 'PCNTL' już załadowany w nieznane na linii 0). Oto moje zmiany - dodałem specjalnie w linii "E_DEPRECATED", aby wyciszyć wiadomości.

Linia 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) 
+8

Są one wyłączone dla Apache php.ini, ponieważ te funkcje nie działają przez Apache. Działają tylko na CLI. Na Ubuntu /etc/php5/apache/php.ini te powinny pozostać wyłączone, ale nie w /etc/php5/cli/php.ini –

+0

@EddieJaoude, Twój komentarz powinien być odpowiedzią – WattsInABox

+1

Mimo że te funkcje nie są wyłączone pcntl nie zadziała, chyba że włączysz moduł za pomocą: 'sudo php5enmod pcntl' –

7

Istnieje kilka kroków, tak: (mój OS to debian7.2 xfce x86).

1: i zainstalować PCNTL jak ten

#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: gdy jest restart nginx lub apache2, php dostać jedno ostrzeżenie.

"PHP Warning: Moduł 'PCNTL' już załadowany w nieznane na linii 0"

3: więc

„rm -rf/etc/php5/mods-available /pcntl.ini i /etc/php5/conf.d/pcntl.ini”

4: edytować plik "php.ini".

a.apache2, it's in "/etc/php5/apache2/php.ini" 
b.cgi like nginx,it's in "/etc/php5/cgi/php.ini" 

uczynić

"disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited..." 
comments, add " ; " in front of "disable_functions". 

zrestartować serwer i szczęścia gone.good ostrzegawczy.

+0

to zadziałało dla mnie, wielkie dzięki! –

0

W Ubuntu 15.04, PCntL jest instalowany w php CLI, ale domyślnie wyłączony. Aby włączyć, edytować /etc/php5/cli/php.ini i skomentuj linię:

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, 

Jeśli chcesz te włączony apache2, a następnie edytować plik i /etc/php5/apache2/php.ini dokonać tej samej zmiany.

Wskazane może być usunięcie tylko tych funkcji, które są potrzebne, aby zachować jak najwięcej ograniczeń bezpieczeństwa.

Powiązane problemy