自己ホスト型ボックス、
RHEL 6
PHP 5.3.3
PDOがインストールされている
freetdsがインストールされています
pdo_dblib-これまでのところ、インストールできない
私の目標はPDOをsybaseで使用することです。適切なバージョンのphpソースコードからpdo_dblibをインストールしようとしています。私はさまざまな方法を試し、このトピックに関するヘルプをかなり検索しましたが、まだ成功していません。
$ ./configure
$ make
$ su root
Password:
$ make install
これは成功です
/ ext/pdo_dblibフォルダー内:
$ phpize
$ ./configure
$ make
$ make test
エラー出力:
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
それは見栄えがよくありません...私はこれを調査し、これのための興味深いハックを発見しました ここ 。しかし、pdo.iniをpdo_0.iniに変更することは解決策ではありませんでした。makeテストで同じエラーが発生するためです。
$ su
$ make install
出力:
Installing shared extensions: /usr/lib64/php/modules/
それは奇妙に思えます...そしていいえ、実際にはインストールされません(Apacheの再起動後にphpinfoに表示されません)。
手順に正確に従って、プレフィックスを追加します
$ ./configure --prefix=/usr/local/freetds
$ make
$ su root
Password:
$ make install
これは成功です
/ ext/pdo_dblibフォルダー内:
$ phpize
$ ./configure --with-sybase=/usr/local/freetds
これにより、出力の下部に次のエラーが生成されます
...
checking for PDO_DBLIB support via FreeTDS... yes, shared
configure: error: Cannot find FreeTDS in known installation directories
freetds ./configureバリエーション(--prefix ...を含むか含まないか)はこの結果を変更しなかったので、スキップします。
指定されたメソッドに従います ここ 。
pecl download pdo_dblib
tar -xzvf PDO_DBLIB-1.0.tgz
行を削除し、
<dep type=”ext” rel=”ge” version=”1.0″>pdo</dep>
Package.xmlファイルを保存し、PDO_DBLIBディレクトリに移動しました。
mv package.xml ./PDO_DBLIB-1.0
PDO_DBLIBディレクトリに移動し、ディレクトリからパッケージをインストールしました。
cd ./PDO_DBLIB-1.0
pecl install package.xml
しかし、このコマンドは方法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
方法1の後、iniファイルを確認し、pdo.soおよびpdo_dblib.soファイルがロードされるように構成されていることを確認します。コマンドラインからphp -iを使用してこれを実行し、「読み込まれた構成ファイル」と「解析された追加の.iniファイル」を探すことができます。
それらのファイルの中で、extension = pdo.soがロードされていることを確認してください(おそらく、/おそらくpdo_dblib.soがロードされる前に)。個別の.iniファイルを維持したい場合は、どのようにストレートls -al
ファイルを並べ替えます。
方法1に戻り、freetdsを再構築します
./configure --enable-msdblib
そしておそらく
--enable-sybase-compat
それでも失敗する場合は、ロードに失敗した.soに対してlddの出力をポストします。
私はこの作品を最近見つけました:
rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm && \
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm && \
yum update -y && yum install --enablerepo=remi -y \
php-cli \
php-fpm \
php-mssql
次のコマンドの出力をシフトすることにより、インストールされているPDO DBLIBを確認できます。
php -i