Max*_*ers 7 php sybase pdo freetds rhel6
自托管盒子,
RHEL 6
PHP 5.3.3
PDO 安装了
freetds 安装了
pdo_dblib - 到目前为止没有运气安装
我的目标是在 sybase 中使用 PDO。试图从适当版本的 php 源代码安装 pdo_dblib。我尝试了多种方法并搜索了很多有关此主题的帮助,但尚未成功。
$ ./configure
$ make
$ su root
Password:
$ make install
Run Code Online (Sandbox Code Playgroud)
这是成功的
在 /ext/pdo_dblib 文件夹中:
$ phpize
$ ./configure
$ make
$ make test
Run Code Online (Sandbox Code Playgroud)
错误输出:
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
Run Code Online (Sandbox Code Playgroud)
这看起来不太好......我研究了这个并在这里找到了一个有趣的黑客。但是将 pdo.ini 更改为 pdo_0.ini 不是解决方案,因为我在 make test 中仍然遇到相同的错误。
$ su
$ make install
Run Code Online (Sandbox Code Playgroud)
输出:
Installing shared extensions: /usr/lib64/php/modules/
Run Code Online (Sandbox Code Playgroud)
这看起来很奇怪……不,它实际上并没有安装(在 apache 重启后没有显示在 phpinfo 上)。
完全按照说明,我添加前缀
$ ./configure --prefix=/usr/local/freetds
$ make
$ su root
Password:
$ make install
Run Code Online (Sandbox Code Playgroud)
这是成功的
在 /ext/pdo_dblib 文件夹中:
$ phpize
$ ./configure --with-sybase=/usr/local/freetds
Run Code Online (Sandbox Code Playgroud)
这会在输出底部产生以下错误
...
checking for PDO_DBLIB support via FreeTDS... yes, shared
configure: error: Cannot find FreeTDS in known installation directories
Run Code Online (Sandbox Code Playgroud)
freetds ./configure 变体(包括或不包括 --prefix...)没有改变这个结果,所以我会跳过它。
遵循此处指定的方法。
pecl download pdo_dblib
tar -xzvf PDO_DBLIB-1.0.tgz
Run Code Online (Sandbox Code Playgroud)
删除了行,
<dep type=”ext” rel=”ge” version=”1.0?>pdo</dep>
Run Code Online (Sandbox Code Playgroud)
保存了 package.xml 文件,并将其移动到 PDO_DBLIB 目录中。
mv package.xml ./PDO_DBLIB-1.0
Run Code Online (Sandbox Code Playgroud)
导航到 PDO_DBLIB 目录,然后从该目录安装包。
cd ./PDO_DBLIB-1.0
pecl install package.xml
Run Code Online (Sandbox Code Playgroud)
但是,此命令给了我以下错误输出,与方法 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
Run Code Online (Sandbox Code Playgroud)
小智 1
使用方法 1 后,检查 ini 文件并确保 pdo.so 和 pdo_dblib.so 文件已配置为要加载。您可以使用 php -i 从命令行执行此操作,并查找“加载的配置文件”以及“解析的其他 .ini 文件”。
在这些文件中,确保扩展 = pdo.so 已加载(可能/可能在加载 pdo_dblib.so 之前)。如果您想维护单独的 .ini 文件,您可以通过直接ls -al
排序文件的方式来控制加载顺序。