Php pdo_dblib – 无法find/无法加载freetds

自己托pipe的盒子,
RHEL 6
PHP 5.3.3

PDO安装
freetds安装
pdo_dblib – 到目前为止没有运气安装

我的目标是使用带有sybase的PDO。 尝试从适当的版本php源代码安装pdo_dblib。 我已经尝试了各种方法,并在这个主题上寻找了很多帮助,但还没有成功。

方法1

安装freetds

$ ./configure $ make $ su root Password: $ make install 

这是成功的

安装pdo_dblib

在/ 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并不是解决scheme,因为我在make test上仍然遇到同样的错误。

 $ su $ make install 

输出:

 Installing shared extensions: /usr/lib64/php/modules/ 

这似乎很奇怪…没有,它实际上并没有安装(Apache重启后没有显示在phpinfo上)。

方法2

安装freetds

完全按照说明,我添加前缀

 $ ./configure --prefix=/usr/local/freetds $ make $ su root Password: $ make install 

这是成功的

安装pdo_dblib

在/ 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 

方法3

freetds ./configure变体(包括或不包括–prefix …)没有改变这个结果,所以我会跳过它。

安装pdo_dblib pecl扩展

遵循这里指定的方法。

 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文件被configuration为加载。 你可以使用php -i从命令行执行此操作,然后查找“已加载的configuration文件”以及“已parsing的附加.ini文件”。

在这些文件中,确保extendion = pdo.so被加载(可能/可能在加载pdo_dblib.so之前)。 如果你想维护单独的.ini文件,你可以通过直接ls -al命令文件来控制加载顺序。

回到方法一,重buildfreetds

 ./configure --enable-msdblib 

并可能

 --enable-sybase-compat 

如果仍然失败,请将ldd的输出发布到任何无法加载的.so。

现在我发现了这个作品:

 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 

您可以通过筛选以下命令的输出来validation安装的PDO DBLIB:

 php -i