Php unter Cygwin – error while loading shared libraries

INIT

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.

Quellen

Categories: Anleitung Bugfixing Cygwin
Tags: apt-cyg bugfix cygwin ldd pcre php Windows

Comments (4)

tuxinaut on 2013-08-29 13:32
Ja viel Spaß :) Support würdest du dafür von mir nicht bekommen. Nein es gibt einen ganzen Blumenstrauß an Oberflächen und Konsolen. Da wir noch ein wenig mehr machen wollen hat sich bis jetzt Cygwin als richtige Wahl herausgestellt. Ich möchte jetzt in keinen Grabenkampf einsteigen. Jetzt nutzt das wo er meint besser mit zurecht zu kommen. Beide Systeme haben vor und Nachteile. Wir lieben halt Git der andere svn so ist das halt.

Sebastian on 2013-08-27 14:58
Jaaa, aber für PHP hätte ich trotzdem XAMPP genommen :p Braucht man für git unter Windows noch immer cygwin? Ich habe mich ja damals bewusst für mercurial entschieden, weil es in etwa das selbe kann, aber unter Windows "auch einfach läuft" und ohne Plugins diese tolle Weboberfläche hat <3.

tuxinaut on 2013-08-27 12:16
Nein mit Absicht mache ich das bestimmt nicht so komplex. Es ist natürlich für die Arbeit und natürlich wie soll es sein für die Kollegen mit Windows. Wir machen damit ein wenig mehr als nur grep. Git war das ausschlaggebende Argument für Cygwin danach folgte Vagrant was leider noch nicht ganz sauber läuft. Das PHP dient nicht zum testen der eigentlich Applikation sondern "nur" um Composer ( Dependency Manager for PHP ) auszuführen vielleicht auch in Zukunft um unit Tests auszuführen. SSH macht fühlt sich darüber auch wie SSH an :) Du siehst wir bauen unseren Windows DEV Stack darauf auf. Von XAMPP sind wir in den kommenden Wochen hoffentlich komplett weg. XAMPP ist zwar einfach, bildet aber in keinsten einen Produktiv Server ab! Zum entwickeln und testen nutzen wir das oben aufgeführte Vagrant das ermöglicht einen auf relativ einfache Weise eine dev / test Umgebung mittels KVM / Virtualbox usw. zu erstellen die den Produktiv System zu 99.99% gleicht. Ein weiterer Vorteil ist die Möglichkeit der lokalen Entwicklung.

sebastian on 2013-08-24 23:04
Machst du das mit Absicht so kompliziert? Ich nutze cygwin zwar auch, in der Regel um auch solche Sachen wie grep zu haben, aber PHP geht doch zum Testen mit XAMPP einfacher, oder? Ich lasse damit unter Windows-Kisten zum Tesen auch immer dem MySQL laufen.