Selbst gehostete Box,
RHEL 6
PHP 5.3.3
PDO installiert
freetds installiert
pdo_dblib - bisher kein Glück bei der Installation
Mein Ziel ist es, PDO mit Sybase zu verwenden. Versuch, pdo_dblib vom entsprechenden PHP-Quellcode der Version zu installieren. Ich habe verschiedene Methoden ausprobiert und viel nach Hilfe zu diesem Thema gesucht, bin aber noch nicht erfolgreich.
Methode 1
Installieren Sie freetds
$ ./configure
$ make
$ su root
Password:
$ make install
Das ist erfolgreich
Installieren Sie pdo_dblib
im Ordner / ext / pdo_dblib:
$ phpize
$ ./configure
$ make
$ make test
Fehlerausgabe:
PHP Warning: PHP Startup: Unable to load dynamic library '/home/sybase/Install_items/php_533_src/php-5.3.3/ext/pdo_dblib/modules/pdo_dblib.so' - /home/sybase/Install_items/php_533_src/php-5.3.3/ext/pdo_dblib/modules/pdo_dblib.so: undefined symbol: php_pdo_register_driver in Unknown on line 0
Warning: PHP Startup: Unable to load dynamic library '/home/sybase/Install_items/php_533_src/php-5.3.3/ext/pdo_dblib/modules/pdo_dblib.so' - /home/sybase/Install_items/php_533_src/php-5.3.3/ext/pdo_dblib/modules/pdo_dblib.so: undefined symbol: php_pdo_register_driver in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/home/sybase/Install_items/php_533_src/php-5.3.3/ext/pdo_dblib/modules/pdo_dblib.so' - /home/sybase/Install_items/php_533_src/php-5.3.3/ext/pdo_dblib/modules/pdo_dblib.so: undefined symbol: php_pdo_register_driver in Unknown on line 0
Warning: PHP Startup: Unable to load dynamic library '/home/sybase/Install_items/php_533_src/php-5.3.3/ext/pdo_dblib/modules/pdo_dblib.so' - /home/sybase/Install_items/php_533_src/php-5.3.3/ext/pdo_dblib/modules/pdo_dblib.so: undefined symbol: php_pdo_register_driver in Unknown on line 0
Das sieht nicht gut aus ... Ich habe das recherchiert und hier einen interessanten Hack dafür gefunden . Das Ändern von pdo.ini in pdo_0.ini war jedoch nicht die Lösung, da beim Make-Test immer noch dieselben Fehler aufgetreten sind.
$ su
$ make install
Ausgabe:
Installing shared extensions: /usr/lib64/php/modules/
Das scheint seltsam ... und nein, es wird nicht installiert (wird nach dem Neustart von Apache nicht auf phpinfo angezeigt).
Methode 2
Installieren Sie freetds
Ich folge genau den Anweisungen und füge das Präfix hinzu
$ ./configure --prefix=/usr/local/freetds
$ make
$ su root
Password:
$ make install
Das ist erfolgreich
Installieren Sie pdo_dblib
im Ordner / ext / pdo_dblib:
$ phpize
$ ./configure --with-sybase=/usr/local/freetds
Dies erzeugt den folgenden Fehler am unteren Rand der Ausgabe
...
checking for PDO_DBLIB support via FreeTDS... yes, shared
configure: error: Cannot find FreeTDS in known installation directories
Methode 3
Die freetds ./configure-Variante (einschließlich oder ohne das --prefix ...) hat das Ergebnis nicht geändert, daher überspringe ich es.
Installieren Sie die Erweiterung pdo_dblib pecl
nach der hier angegebenen Methode .
pecl download pdo_dblib
tar -xzvf PDO_DBLIB-1.0.tgz
Zeile entfernt,
<dep type=”ext” rel=”ge” version=”1.0″>pdo</dep>
Die Datei package.xml wurde gespeichert und in das Verzeichnis PDO_DBLIB verschoben.
mv package.xml ./PDO_DBLIB-1.0
Navigierte zum Verzeichnis PDO_DBLIB und installierte das Paket aus dem Verzeichnis.
cd ./PDO_DBLIB-1.0
pecl install package.xml
Dieser Befehl gibt mir jedoch die folgende Fehlerausgabe wie Methode 2 .
checking for PDO_DBLIB support via FreeTDS... yes, shared
configure: error: Cannot find FreeTDS in known installation directories
ERROR: `/home/sybase/Install_items/pecl_pdo_dblib/PDO_DBLIB-1.0/configure' failed
pdo_informix.so: undefined symbol: php_pdo_register_driver in Unknown on line 0
Antworten:
Überprüfen Sie nach Methode 1 Ihre INI-Dateien und stellen Sie sicher, dass die Dateien pdo.so und pdo_dblib.so zum Laden konfiguriert sind. Sie können dies über die Befehlszeile mit einem PHP -i tun und nach "Geladene Konfigurationsdatei" sowie "Zusätzliche analysierte INI-Dateien" suchen.
Stellen Sie unter diesen Dateien sicher, dass extension = pdo.so geladen ist (möglicherweise / wahrscheinlich bevor Ihre pdo_dblib.so geladen wird). Wenn Sie separate INI-Dateien verwalten möchten, können Sie die Ladereihenfolge anhand der Reihenfolge
ls -al
der Dateien steuern .quelle
Kehren Sie zu Methode 1 zurück und erstellen Sie Freetds mit neu
und möglicherweise
Wenn dies immer noch fehlschlägt, stellen Sie die Ausgabe von ldd gegen eine .so-Datei, die nicht geladen werden kann.
quelle
Ich fand, dass dies heutzutage funktioniert:
Sie können die installierte PDO-DBLIB überprüfen, indem Sie die Ausgabe des folgenden Befehls sichten:
quelle