Php unter Cygwin – error while loading shared libraries
2013-08-22INIT
Eigentlich wollte ich nur kurz ausprobieren, wie sich php unter cygwin verhält.
PHP ist leider nicht direkt über Cygwin verfügbar. Dank des Cygwin Ports project kann php recht einfach installiert werden. Am allereinfachsten geht dieses mittels apt-cyg (Dazu muss ich mal einen eigenen Beitrag verfassen).
apt-cyg -m ftp://ftp.cygwinports.org/pub/cygwinports install php
Dieses hat php wie gewünscht installiert. Das Problem war aber das ich bei testen folgende Fehlermeldung bekam.
tuxinaut::tuxi-win7-test { ~ }-> php
/usr/bin/php.exe: error while loading shared libraries: ?: cannot open shared object file: No such file or directory
Lösung
Sehr unerfreulich :/ Nach ein wenig suchen, mittels ldd erst für /bin/php selbst und den abhängigen dlls zeigte sich folgendes Bild.
tuxinaut::tuxi-win7-test { ~ }-> ldd /usr/bin/cygphp5.dll
ntdll.dll => /cygdrive/c/Windows/SysWOW64/ntdll.dll (0x77210000)
kernel32.dll => /cygdrive/c/Windows/syswow64/kernel32.dll (0x756b0000)
KERNELBASE.dll => /cygdrive/c/Windows/syswow64/KERNELBASE.dll (0x74f40000)
??? => ??? (0x6abc0000)
??? => ??? (0x68b80000)
??? => ??? (0x61000000)
??? => ??? (0x694c0000)
??? => ??? (0x6c140000)
Nach einer weiteren Suche (sorry habe die Quelle verlegt) stellte sich heraus das das Paket pcre fehlte. Warum das so ist kann ich nicht nachvollziehen. Es ist auch nicht als Abhängigkeit für php eingetragen BUG?
apt-cyg -m ftp://cygwin.mirrors.pair.com install libpcre
Nachdem dieses nachinstalliert wurde lief php wie erwartet.
tuxinaut::tuxi-win7-test { ~ }->php -v
PHP 5.4.18 (cli) (built: Aug 18 2013 03:02:39)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
1. Update
Ich konnte mir damals schon nicht vorstellen warum das so sein sollte. Nun ist mir aber schon vor längeren bewusst geworden, warum die Abhängigkeit nicht installiert worden ist. Das Apt-Cyg Script kann zur Zeit nur mit einer Quelle umgehen, Abhängigkeiten aus den normalen Quellen werden also nicht installiert.
Comments (4)