Zend Optimizer - Fatal error: Incompatible file format

Po aktualizacji Zend Guarda do nowszej wersji np. 5.0.1 i po przekompilowaniu projektu może pojawić się błąd o następującej treści:

Error: Fatal error: Incompatible file format: The encoded file has format major ID 3, whereas the Optimizer expects 2 in [nazwa_pliku] on line 0

Jednak nie każdy problem taki straszny na jakiego wygląda…

Wystarczy zaktualizować ZendOptimizer’a do wersji 3.3 i Zend Engine do wersji 2.2 i będzie po kłopocie.
Funkcja phpinfo() pomoże sprawdzić załadowaną wersję Zend Optimizer’a.

Skąd ściągnąć aktualizacje powyższych?
Sprawdź w Google.
Powodzenia.

Windows Vista bootmgr - file not found

Szczęśliwi posiadacze systemu Windows Vista pewnie nie raz natknęli się na problemy związane z prawidłowym startem systemu.
Przyczyn może być wiele. Moja sytuacja była dość śmieszna, wręcz głupia.
Przez przypadek wyłączyłem nogą UPSa, pod którego był podłączony calutki zestaw komputerowy.
Po włączeniu wszystkiego na ekranie miałem napis w stylu:

Booting ‚Windows Vista’
acpi
Vista Loader 2.1.2
Done!
fallback 1
find -set-root /bootmgr

Error 17: File not found
Booting ‚Windows NT/2000/XP’

fallback 2
find -set-root /ntldr

Error 17: File not found
Booting ‚Enter Command Line’

Boot failed! Press Enter to enter command line.

Są 3 możliwości.

1) reinstalacja całego systemu w płytki instalacyjnej (dla mniej zaawansowanych użytkowników)

2) uruchomienie systemu z płytki instalacyjnej i przejście do wiersza poleceń, gdzie możemy wykonać następujące czynności:

bootrec.exe /fixmbr
bootrec.exe /fixboot

lub jeśli to nie pomoże, to w ostateczności:

X:\boot\bootsect.exe /nt60 ALL /force

gdzie X, to litera dysku, na którym znajduje się instalacja Visty

inny sposób:

expand bootmgr temp
attrib bootmgr -s -r -h
del bootmgr
ren temp bootmgr
attrib bootmgr -a +s +r +h

W tym momencie stary bootmgr jest nadpisywany przez oryginalny z płytki instalacyjnej i możemy uruchomić nasz system bez żadnych problemów.
Trzeba jednak pamiętać, że bootmgr na płytce jest nieaktywowany, tzn. że po uruchomieniu systemu naszą Vistę należy ponownie aktywować.
W tym momencie przydałby się klucz licencji. 🙂

3) ręczne uruchomienie Visty za pomoca poleceń w GRUBie

title Load bootmgr [etykietka]
root (hd0,0) [definicja ścieżki głównej]
chainloader (hd0,0)/bootmgr [załadowanie boot managera]
boot [start bootowania systemu]

i też powinno zadziałać.

Powodzenia.

Upgrade WordPress’a

Postanowiłem wykonać przesiadkę z wersji 2.0.6 na 2.6.2 (duży, śmiały krok).

W pierwszej koleności ściągnąłem najnowszy pakiet WP ze strony autorów.
Następnie wykonałem kopie zapasowe plików poprzedniej wersji i bazy danych.
W zasadzie po wrzuceniu nowych plików do odpowiedniego katalogu WP, na stronie panelu admina WP pojawia się okienko do aktualizacji systemu (skrypt upgrade.php). Czyli wszystko jakby zgodnie z planem.
Po wykonaniu tej czynności przestała działać tylko jedna rzecz - kategorie.
Trochę czasu zajęło mi znalezienie przyczyny braku kategorii. Nie można było ani dodawać ani usuwać ani tym bardziej przydzielać wpisów.

Co się tak właściwie stało?

Otóż okazało się, że brakuje tabel z przedrostkiem wp_term:

wp_term_relationships
wp_term_taxonomy
wp_terms

Chciałem jednak, aby wszystko poszło z automatu, więc aby zachować wszystkie wpisy i strony (tego akurat upgrade nie ruszył i bardzo dobrze), musiałem wyedytować skrypt install.php (http://twoja-domena/wp-admin/install.php) i zakomentować jedną linijkę uruchamiającą funkcje sprawdzające czy WordPress jest już zainstalowany.

// Let’s check to make sure WP isn’t already installed.
if ( is_blog_installed() ) {display_header(); die(‚<h1>'.__('Already Installed').'

'.__('You appear to have already installed WordPress. To reinstall please clear your old database tables first.').'

');}

Oczywiście uruchomił się instalator WordPress.
Poszło bez przeszkód w ułamku sekundy z zachowaniem starych tabel i danych (sprawdziłem).
Warto porównać jeszcze czy atrybuty pozostałych tabel są zgodne z tymi z instalatora, ale raczej powinno być wszystko tak jak trzeba.
Warto też odkomentować spowrotem powyższy kod.
Teraz już można się cieszyć funkcjonalnością Kategorii w wersji 2.6.2 WordPressa.

Ale nie ma róży bez kolców.

Nowy WP posiada nowe struktury kategorii i przypisanych do nich wpisów.
Niestety nie wpadłem jeszcze na inny pomysł jak tylko ponowne utworzenie hierarchii kategorii i przypisania wpisów do nich. Tym razem wszystko się zapisze do nowych brakujących wcześniej tabel.
Stara tabela o nazwie wp_categories jest w tym momencie historyczna.

Przydatne narzędzia kolejek postfix’a

Czasami bywają krytyczne sytuacje w kolejkami postfix’a. Pomocne są wtedy narzędzia będące elementami pakietu (portu) postfix’a. Nie trzeba więc niczego więcej instalować.

Narzędzia kolejek:

postqueue -p
wyświetla listę wszystkich wiadomości w kolejce

postsuper -d (Queue ID)
pozwala usuwać wiadomość z kolejki o danym ID

postsuper -d ALL
usuwa wszystkie wiadomości z kolejki

postsuper -h (Queue ID)
zatrzymanie wiadomośic w kolejce (kolejka hold)

postsuper -H (Queue ID)
przeniesienie wiadomości z powrotem do menadżera kolejek

postsuper -r ALL
zwraca wiadomości z powrotem do kolejki, wiadomości te otrzymują nowe identyfikatory i dodatkowy nagłówek Received

postcat -q
wyświetlanie zawartości pliku kolejki

postqueue -f
wypychanie wiadomości

postqueue -s domena.com
wypychanie wiadomości domeny domena.com

mailq -q /identyczne do sendmail -bp/
lista wiadomości w kolejce do obsłużenia

Bieżący podgląd zawartości loga postfix’a zapewnia polecenie:

tail -f /var/log/maillog

Ostatnie dwa polecenia są bardzo pomocne, jeśli chcemy ręcznie przyspieszyć obsługę kolejek (mailq -q) i jednocześnie przyjrzeć się czy faktycznie postfix coś z nimi robi (tail -f /var/log/maillog).

W sumie o takie czynności zawsze można poprosić administratora.

Openwebmail i „Premature end of script headers”

Aby nasze systemy i aplikacje działały prawidłowo lubimy je aktualizować do najnowszych wersji. Aczkolwiek są różne ‚szkoły’: jedni aktualizują a drudzy podziwiają zalety ostatnich zainstalowanych wersji systemów serwerowych nietykając aktualizacji.

Należę do tej pierwszej grupy i zachęcam jednak do korzystania z wszelkich dostępnych aktualizacji istniejących w sieci.
Ale oczywiście wszystko z głową.

Ostatnio postanowiłem zaktualizować Perla do wersji 5.8.8 i dzięki temu przestał działać Openwebmail.
W logach webowego serwera apache widziałem tylko komunikaty typu:

Premature end of script headers: openwebmail.pl

Prawa dostępu do katalogu były ustawione prawidłowo, alias skryptowy CGI (ScriptAlias) również.
Pojawiła się więc zagadka.

Szukając odpowiedzi w sieci natrafiłem na ciekawą informację dotyczącą wykonywania skryptów CGI na serwerze apache:

The most common cause of this problem is the script dying before sending the complete set of headers, or possibly any at all, to the server. To see if this is the case, try running the script standalone from an interactive session, rather than as a script under the server. If you get error messages, this is almost certainly the cause of the „premature end of script headers” message. Even if the CGI runs fine from the command line, remember that the environment and permissions may be different when running under the web server. The CGI can only access resources allowed for the User and Group specified in your Apache configuration. In addition, the environment will not be the same as the one provided on the command line, but it can be adjusted using the directives provided by mod_env.

Źródło: http://httpd.apache.org/docs/1.3/misc/FAQ.html#premature-script-headers.

Chodzi o to, że wykonywane skrypty CGI na serwerze muszą mieć dostęp do otoczenia (environment), które jest przez te skrypty zmieniane, a co za tym idzie musi być załadowany moduł mod_env.
Brakujący moduł doinstalowałem z portu php5-extensions-1.1. Jednak sama instalacja modułu nie pomogła rozwiązać problem.

Okazuje się, że w momencie wykonywania skryptów Perl korzysta z takiej opcji jak SUIDPERL (Set User ID PERL), tj. przydziela identyfikator użytkownika na czas wykonania skryptu.

Można się o tym dowiedzieć czytając informacje o zmianach w nowej wersji Openwebmaila.
Najistotniejsza informacja dla nas:

(…) Perl automatically runs in suid mode if the suid bit is set on the running script AND perl is compiled with the DOSUID option. The openwebmail-*.pl scripts still require suid, so please make sure they are properly chmod’d 4755 as usual (…)

Źródło: http://openwebmail.org/openwebmail/doc/changes.txt.

Lecz mało kto wie, że w wersji 5.8.8 Perla opcja SUIDPERL standardowo jest wyłączona.
Musimy przeinstalować Perla (z portów) z opcją SUIDPERL w następujący sposób:

cd /usr/ports/lang/perl5.8
make deinstall
make ENABLE_SUIDPERL=YES install clean

Gdy krypty perlowe Openwebmaila nadal generują te same błędy, należy jeszcze przeinstalować Openwebmaila.

Powodzenia!

Nowy serwer

Drodzy internauci. Chciałbym poinformować, że praktycznie już od wczoraj serwis śmiga na nowym serwerze.
Jest to platforma IBM x330, 2x Intel 1.4GHz Tualatin, 2x 1024MB RAM, 2x 36GB SCSI, 1x CD-ROM, 1x FDD, 2x USB, 2x Ethernet 10/100Mbit.

Windows Vista Service Pack 1 - co robić?

Nie wszyscy lubią system Windows Vista. Nie wszyscy są nim zachwyceni z uwagi na zasobożerność. Nie wszyscy lubią Windowsy.
Należę jednak do tej mniejszości, która potrafi poradzić sobie z każdym systemem, nawet z Vistą.

Od początku maja w repozytorium Microsoft Windows Update widnieje paczka Service Pack 1.
Dopiero dzisiaj udało mi się ją bezproblemowo zainstalować.

Otóż problem pojawiał się w momencie instalacji Etapu 3/3, gdzie w 78% postepu instalacji system się zawieszał.
Jedyną drogą powrotną było przywrócenie systemu do jakiegoś punktu przywracania z przeszłości.

Jak się okazuje, po uważnym przeczytaniu strony Microsoft Support (http://support.microsoft.com/kb/947366), wpadłem na pomysł totalnego wyłączenia antywirusa NOD32 oraz firewalla Jetico.

Dopiero teraz aktualizacja przebiegła pomyślnie. Wam również życzę powodzenia.

- Panie Doktorze, mam kłopoty z zaśnięciem.
- Proszę brać te czopki, bardzo szybko działają.
Przy następnej wizycie pacjent prosi:
- A mógłbym dostać coś słabszego? Bo jak się budzę to mam jeszcze palec w d***e…