W PHPie zostały wykryte jakieś bugi więc pomyślałem że warto by zrobić upgrade na naszym Gentoowskim serwerem WWW. Jakiś czas temu zmieniłem mpm w apache z prefork na workera (pierwszy robi proces dla każdego żądania, drugi używa do tego wątków więc ogólnie żre mniej zasobów) więc PHP chciał być przekompilowany z opcją USE=threads (używam FastCGI ale mod_php trzymam na wszelki wypadek) . Wydawałoby się że nie powinno to być problemem, dodać flagę, przekompilować i tyle. Ta, byłoby za dobrze ;/

Odpaliłem emerge, przy okazji przekompilowało jakies zależności też z opcją “threads”. PHP się nie skompilował, tylko zależności bo php chciał żeby mu jeszcze przekompilować ręcznie libpg (jakby nie mogli tego wpakować w zależności), w międzyczasie libcurl dostał update psując starego PHP.

Nazwa pliku zmieniła się z libcurl.so.3 na libcurl.so.4 a stary perl chodził na tym pierwszym więc byebye.

ln -s libcurl.so.4 libcurl.so.3

I stary php zaczął działać normalnie. Pomęczyłem trochę nowy, skompilowałem, restart apache, nie działa. Uparcie próbuje ładowac liby do memcached które są tylko w katalogu “non-treaded”, wywala tylko warning ale to wystarczy żeby FastCGI już go nie lubiło. Pobawiłem się trochę, zaczęło działać, przestało działać.

Po otworzeniu paru stron fastcgi sypał errorami że php ma timeouty, cos mnie napadło żeby odpalić php-cgi. Odpalam, wklepuje coś, ctrl-d (czyli zakończ stdin), php wywala wyjście ale nie wychodzi. Zastanawiam się czy to normalne, loguje sie na devrandom (debian) taki sam test, php wychodzi po ctrl-d. WTF!?

Wyłączyłem moduł do apache w phpie, wyłączyłem threads, rekompilacja, wywalenie paru plików z configa apache (configi mod_php5, czepiał się mimo że ich nie ładował), apache stop, killall -9 apache2 ; apache start działa -_-

Więc jeżeli drogi Czytelniku zamierzasz kiedykolwiek używać Gentoo na twoim jedynym serwerze i nie masz opcji testowania upgradu na serwerze testowym z takim samym configiem (łącznie z takimi samymi wersjami pakietów itp.) , przemyśl to jeszcze raz ;]