Problem mit PHP (cli)

Saik

Registered User
Hallo,

ich habe auf meinem Server (Linux Suse 9.0) zu Hause PHP5 neu installiert (vorher PHP4). Wenn ich nun php von der console aus starte erhalte ich folgende Fehlermeldung:

PHP Warning: PHP Startup: ôK@ÐÿJ@: Unable to initialize module
Module compiled with module API=20020429, debug=0, thread-safety=0
PHP compiled with module API=20041030, debug=0, thread-safety=0
These options need to match
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/mysql.so' - /usr/lib/php/extensions/mysql.so: undefined symbol: OnUpdateInt in Unknown on line 0
PHP Warning: PHP Startup: ïK@°øJ@: Unable to initialize module
Module compiled with module API=20020429, debug=0, thread-safety=0
PHP compiled with module API=20041030, debug=0, thread-safety=0
These options need to match
in Unknown on line 0
PHP Warning: PHP Startup: ÖôJ@@ðJ@: Unable to initialize module
Module compiled with module API=20020429, debug=0, thread-safety=0
PHP compiled with module API=20041030, debug=0, thread-safety=0
These options need to match
in Unknown on line 0
[...]

Woran liegt das und was kann ich tun, damit diese Meldungen nicht mehr auftreten?

Vielen Dank schon mal im Voraus für eure Mühe.
 
Hast Du auch ein 'make install modules' gemacht (oder heißt das bei PHP5 nun anders?)
Auf jedenfall scheinen die Module nicht an die richtige Stelle kopiert worden sein, bzw. in der php.ini steht vieleicht ein falscher Pfad für die Extensions.

huschi.
 
Hi,

das selbe Problem habe ich gerade auch, leider jedoch
bringt mich make install Modules nicht weiter.

Ich erhalte die Fehlermeldungen weiterhin.

Code:
PHP Warning:  PHP Startup: zlib: Unable to initialize module
Module compiled with module API=20050922, debug=0, thread-safety=0
PHP    compiled with module API=20060613, debug=0, thread-safety=0
These options need to match
 in Unknown on line 0

Dies tritt für alle Extensions auf, aber nur wenn ich das jeweilige Script
auf der Konsole ausführen möchte.

Online über Apache funktioniert alles ohne Probleme.
Jedoch brauch ich dieses, um diese Dateien zb mittels Cronjobs auszuführen usw.

Das mir damit gesagt wird, dass es die Falsche Version der Extension ist, weiss ich nur leider nicht wie ich es beheben kann.

Es handelt sich um die PHP Version 5.2.1



greetz,
mbanse
 
Da meine magische Kristallkugel keinen TÜV mehr hat, mußt Du uns schon freiwillig mehr Info's über Dein System und wie Du PHP 5.2 installiert hast geben.

huschi.
 
Hi,

klar ich dachte eventuell gibt es da schon so einen Tipp,
da es ja wie gesagt nur an der Kompilierten Version der Module scheitert
da diese ja älter sind als von der aktuellen PHP Installation.

Vorher war PHP 5.1.2 installiert und ich habe nun auf PHP 5.2.1 geupdatet,
wobei eben scheinbar nicht die Module mit aktualisiert worden sind.

PHP 5.1.2 war vorher (ich nehme es an) über ein SuSE RPM installiert worden, da der Server fertig aufgesetzt war.

Hier die aktuelle ./configure von PHP 5.2.1:

Code:
./configure' '--prefix=/usr' '--datadir=/usr/share/php5' '--mandir=/usr/share/man' '--bindir=/usr/bin' '--with-libdir=lib' '--includedir=/usr/include' '--sysconfdir=/etc/php5/apache2' '--with-config-file-path=/etc/php5/apache2' '--with-config-file-scan-dir=/etc/php5/conf.d' '--with-exec-dir=/usr/lib/php5/bin' '--enable-magic-quotes' '--enable-libxml' '--enable-session' '--with-mm' '--with-pcre-regex' '--enable-xml' '--enable-simplexml' '--enable-spl' '--enable-safe-mode' '--disable-debug' '--enable-memory-limit' '--enable-inline-optimization' '--enable-zend-multibyte' '--disable-rpath' '--with-apxs2=/usr/sbin/apxs2' '--enable-cli' '--with-imap' '--with-imap-ssl' '--with-mysql' '--with-openssl' '--without-pgsql' '--with-gd' '--enable-gd-imgstrttf' '--with-jpeg-dir' '--enable-gd-native-ttf' '--with-png-dir' '--with-freetype-dir' '--with-zlib-dir' '--enable-ftp' '--with-gettext'

Wenn du etwas weiteres bzw. etwas bestimmtes wissen möchtest sag einfach, dann geb ich dir die Infos.

Das System selbst ist SuSE 10.1 mit Apache 2.


Danke schonmal ;).

greetz
 
Grundsätzlich solltest Du mal klären, welche Versionen Du nun hast.
Einmal mit phpinfo() im Browser und einmal mit phpinfo() auf der Commandozeile oder alternativ "php -v".

Und zum zweiten Mal:
Wie hast Du auf PHP 5.2.1 geupdated?
(Ich hab keine Lust auf Rätselraten. :( )

huschi.
 
Hi,

ich dachte eigentlich es geht aus meinen vorigen Posts hervor:

[...]Vorher war PHP 5.1.2 installiert und ich habe nun auf PHP 5.2.1 geupdatet[...]

Die Versionen laut phpinfo() über den Apache sowie der Konsole sind die gleichen (5.2.1), lediglich das "Build-Date" unterscheidet sich um ca. 2 Minuten.

PHP habe ich so wie immer geupdatet, also mit dem normalen "3-Satz":
  • aktuelles Source von php.net herunterladen
  • entpacken
  • ./configure (genaue Anweisung siehe oben)
  • make
  • rcapache2 stop && make install && rcapache2 start
auf allen anderen Server läuft es ja auch.
Ich habe dann noch als ich das Problem festgestellt hab eben jenes "make install modules" ausprobiert, diese installiert er dann auch fleißig, aber bringen tut es jedoch nichts.

Wenn ich dich jetzt trotzdem falsch verstanden habe, dann sag mir genau was du wissen willst, ich weis ja nicht wie man PHP sonst noch installieren könnte? Also für mich ist dies die gängigste Methode (auf RPMs steh ich nicht wirklich, daher).



greetz ;)
 
(auf RPMs steh ich nicht wirklich, daher).
Du kennst also doch 2 Methoden! Dann ist die Frage nach dem "Wie" also absolut berechtigt gewesen und ging nicht aus Deinem vorherigen Post hervor.

Zu Deinem Problem:
Untersuche die Module-Sektion der phpinfo(). Suche nach Unterschieden zwischen der Apache-Mod und der CLI-Version. Nutzen beide die selbe php.ini?

Hast Du auch ein "make install-cli" gemacht?

huschi.
 
Hi,

ok ich geb mich ja geschlagen ;).

Also "make install-cli" hatte ich nicht ausgeführt, aber auch ein Nachträgliches bringt keine Änderung.

Auf der Konsole "php -i" ausgeführt bringt mir keine wirklichen Änderungen
der phpinfo() über die Ausgabe des Apache.

Lediglich was ich auf den ersten und zweiten Blick erkennen konnte, war
das die Build-Dates sich unterschieden (logisch da ich CLI ja eben neu gemacht habe), PHP-Api ist die selbe, die Pfade zu den Extensions sind beide gleich ebenso die gleiche php.ini sowie die anderen Config Dateien werden verwendet.



greetz
 
So, nachdem wir jetzt ewig lange drumrum geredet haben kommen wir mal zum Kern:
zlib: Unable to initialize module
Module compiled with module API=20050922,
PHP compiled with module API=20060613
Es geht um das Modul "zlib" und darum, daß die API-Version des zu ladenden Moduls zu alt ist.
Nun schaust Du in beiden phpinfo-Ausgaben nach zlib. Normalerweise ist es als eigenen Modul registriert. Dann schaust Du noch in die php.ini nach zlib und vor allem schaust Du mal nach der extension_dir. Im Angegebenen Verzeichnis der extension_dir solltest Du mal ein "ls -l" ausführen um zu prüfen, wie alt die Module dort sind.
Schau auch nach, ob evtl. eine anderes Extensions-Verzeichnis existiert. (z.B. mit der neuen API-Nummer.)

huschi.
 
Hi,

also beide phpinfo() Ausgaben, geben mir folgendes aus:

Code:
zlib
ZLib Support => enabled
Stream Wrapper support => compress.zlib://
Stream Filter support => zlib.inflate, zlib.deflate
Compiled Version => 1.2.3
Linked Version => 1.2.3

ls -l bringt folgendes:

Code:
total 2628
-rw-r--r-- 1 root root   16956 May  2  2006 bz2.so
-rw-r--r-- 1 root root   10212 May  2  2006 ctype.so
-rw-r--r-- 1 root root   50528 Oct  5  2006 curl.so
-rw-r--r-- 1 root root  139744 Oct  5  2006 dom.so
-rw-r--r-- 1 root root   39512 Oct  5  2006 [URL="ftp://ftp.so"]ftp.so[/URL]
-rw-r--r-- 1 root root  340108 Oct  5  2006 gd.so
-rw-r--r-- 1 root root   11048 May  2  2006 gettext.so
-rw-r--r-- 1 root root   29852 Oct  5  2006 iconv.so
-rw-r--r-- 1 root root  101604 Oct  5  2006 imap.so
-rw-r--r-- 1 root root 1693852 Oct  5  2006 mbstring.so
-rw-r--r-- 1 root root   33728 May  2  2006 mcrypt.so
-rw-r--r-- 1 root root   48704 Oct  5  2006 mysql.so
-rw-r--r-- 1 root root   70560 May  2  2006 openssl.so
-rw-r--r-- 1 root root   19000 May  2  2006 posix.so
-rw-r--r-- 1 root root   27260 May  2  2006 zlib.so

Die Module sind also alt bzw. von 2006, aber wie bekomme ich diese geupdatet?
Ein weiteres Extension-Dir gibt es nicht, ebenso andere ".so's" sind nicht installiert.

Komischerweise hatte ich das Problem zuvor noch nicht, ich konnte PHP inkl. CLI so immer auf dem aktuellen Stand halten.




greetz
 
Hi,

sorry ich konnte mich leider nicht früher melden.

Ja ich hatte es so ausgeführt: "make install modules" dann hat er auch etwas installiert, die schnell "vorbeihuschenden" Zeilen sahen auch nach den PHP Modulen aus.

Ich habe jetzt einfach mal "make install-modules" ausgeführt, dann erhalte ich:

Code:
make install-modules
Installing shared extensions:     /usr/lib/php/extensions/no-debug-non-zts-20060613/
cp: cannot stat `modules/*': No such file or directory
make: *** [install-modules] Error 1

Was mir die Fehlermeldung sagen soll, weiss ich. Das Verzeichnis ist auch leer.
Leider habe ich keine Idee was ich PHP sagen muss, damit es die Module in dem besagten Ordner bereitstellt, zunächst habe ich ja gedacht, dass diese beim Configure angelegt werden oder muss ich nochmal "make" durchspielen?




greetz

[edit]
Die Debug Ausgabe bringt keine wirklichen Infos
 
Last edited by a moderator:
Du kannst ein "make build-modules" machen. (Achte auf Fehlermeldungen!)
Wenn danach das modules-Verzeichnis immer noch leer ist, dann hat er keine Module zu bilden.
Und wenn ich mir jetzt mal Deine configure-Zeile ansehe, finde ich dort "--with-mysql". D.h. daß das MySQL-Modul bereits fest in PHP integriert wird.
Ein "extension=mysql.so" in der php.ini ist damit überflüssig bzw. kann zum o.g. Fehler führen.
Wenn Du MySQL lieber als Modul haben willst mußt Du "--with-mysql=shared" angeben.

huschi.
 
Hi,

sorry erneut für die späte Antwort, aber ist derzeit viel zu tun und
man(n) ist ab und zu mal Froh wenn man was mit der Frau unternehmen kann ;).

Also "make build-modules" ergibt nur:

Code:
make: Nothing to be done for `build-modules'.

Der Ordner bleibt demnach auch leer...
Kann ich PHP es nicht irgendwie aufzwingen, dass es die Module neu macht?
Oder die Module löschen, sodass diese auf jeden fall neu kompiliert werden müssen?

Den Ordner wo sich die bereits vorhandenen kompilierten Module befinden, habe ich schon einmal verschoben, bzw. den Inhalt verschoben, hat PHP aber rein gar nicht gejuckt...

Weder die "normale" Variante noch CLI haben gemeckert.
Noch mehr Module gibt es aber nicht welche sich auf PHP beziehen könnten, danach habe ich schon gesucht.



greetz
 
Back
Top