purkinje Posted January 18, 2014 Share Posted January 18, 2014 Sorry about any formatting inconsistencies here. This question was originally posted on stackoverflow, but none of the suggestions there solved my issue so I thought I'd bring it up here. Some of the information may be extraneous, but was asked for on SO, so I thought it might be helpful. I'm getting this error when I try to start PHP via command line on Fedora 20: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/pdo_odbc.so' - /usr/lib64/php/modules/pdo_odbc.so: undefined symbol: pdo_parse_params in Unknown on line 0 Here are the PHP packages I have installed: php.x86_64 5.5.7-1.fc20 @updates php-ZendFramework.noarch 1.12.3-3.fc20 @updates php-bcmath.x86_64 5.5.7-1.fc20 @updates php-cli.x86_64 5.5.7-1.fc20 @updates php-common.x86_64 5.5.7-1.fc20 @updates php-devel.x86_64 5.5.7-1.fc20 @updates php-gd.x86_64 5.5.7-1.fc20 @updates php-mcrypt.x86_64 5.5.7-1.fc20 @updates php-mssql.x86_64 5.5.7-1.fc20 @updates php-odbc.x86_64 5.5.7-1.fc20 @updates php-pdo.x86_64 5.5.7-1.fc20 @updates php-pear.noarch 1:1.9.4-23.fc20 @fedora php-pecl-jsonc.x86_64 1.3.3-1.fc20 @updates php-pecl-jsonc-devel.x86_64 1.3.3-1.fc20 @updates php-process.x86_64 5.5.7-1.fc20 @updates php-xml.x86_64 5.5.7-1.fc20 @updates I have `extension=pdo_odbc.so` and `extension=oci8.so` as the only extensions defined in my `/etc/php.ini` file. There are also a lot of .ini files in the `/etc/php.d` directory that loads most of the other extensions. The following .so files are in the `/usr/lib64/php/modules` directory: -rwxr-xr-x. 1 root root 32560 Dec 10 23:51 bcmath.so -rwxr-xr-x. 1 root root 24696 Dec 10 23:51 bz2.so -rwxr-xr-x. 1 root root 33752 Dec 10 23:51 calendar.so -rwxr-xr-x. 1 root root 15568 Dec 10 23:51 ctype.so -rwxr-xr-x. 1 root root 86912 Dec 10 23:51 curl.so -rwxr-xr-x. 1 root root 180608 Dec 10 23:51 dom.so -rwxr-xr-x. 1 root root 65496 Dec 10 23:51 exif.so -rwxr-xr-x. 1 root root 2713328 Dec 10 23:51 fileinfo.so -rwxr-xr-x. 1 root root 53624 Dec 10 23:51 ftp.so -rwxr-xr-x. 1 root root 120904 Dec 10 23:51 gd.so -rwxr-xr-x. 1 root root 15640 Dec 10 23:51 gettext.so -rwxr-xr-x. 1 root root 45080 Dec 10 23:51 iconv.so -rwxr-xr-x. 1 root root 40840 Dec 12 09:13 json.so -rwxr-xr-x. 1 root root 45256 Dec 10 23:51 mcrypt.so -rwxr-xr-x. 1 root root 53816 Dec 10 23:51 mssql.so -rwxr-xr-x. 1 root root 560751 Jan 10 10:20 oci8.so -rwxr-xr-x. 1 root root 70312 Dec 10 23:51 odbc.so -rwxr-xr-x. 1 root root 25008 Dec 10 23:51 pdo_dblib.so -rwxr-xr-x. 1 root root 28856 Dec 10 23:51 pdo_odbc.so -rwxr-xr-x. 1 root root 116240 Dec 10 23:51 pdo.so -rwxr-xr-x. 1 root root 29168 Dec 10 23:51 pdo_sqlite.so -rwxr-xr-x. 1 root root 272000 Dec 10 23:51 phar.so -rwxr-xr-x. 1 root root 32880 Dec 10 23:51 posix.so -rwxr-xr-x. 1 root root 15624 Dec 10 23:51 shmop.so -rwxr-xr-x. 1 root root 54176 Dec 10 23:51 simplexml.so -rwxr-xr-x. 1 root root 91368 Dec 10 23:51 sockets.so -rwxr-xr-x. 1 root root 51336 Dec 10 23:51 sqlite3.so -rwxr-xr-x. 1 root root 19880 Dec 10 23:51 sysvmsg.so -rwxr-xr-x. 1 root root 11496 Dec 10 23:51 sysvsem.so -rwxr-xr-x. 1 root root 15720 Dec 10 23:51 sysvshm.so -rwxr-xr-x. 1 root root 19712 Dec 10 23:51 tokenizer.so -rwxr-xr-x. 1 root root 36720 Dec 10 23:51 wddx.so -rwxr-xr-x. 1 root root 32888 Dec 10 23:51 xmlreader.so -rwxr-xr-x. 1 root root 54072 Dec 10 23:51 xml.so -rwxr-xr-x. 1 root root 49152 Dec 10 23:51 xmlwriter.so -rwxr-xr-x. 1 root root 37104 Dec 10 23:51 xsl.so The output of when I run phpinfo() can be found here. Contents of `pdo_odbc.ini` at /etc/php.d: ; Enable pdo_odbc extension module extension=pdo_odbc.so Output of `readelf -Ws pdo_odbc.so`: Symbol table '.dynsym' contains 83 entries: Num: Value Size Type Bind Vis Ndx Name 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND 1: 0000000000001ac0 0 SECTION LOCAL DEFAULT 9 2: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND convert_to_long 3: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND pdo_parse_params 4: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND php_pdo_unregister_driver 5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.2.5 (2) 6: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strcasecmp@GLIBC_2.2.5 (2) 7: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLParamData 9: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND cfg_get_string 10: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLRowCount 11: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND _estrdup 12: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.2.5 (2) 13: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLFreeHandle 14: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLFetchScroll 15: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __stack_chk_fail@GLIBC_2.4 (3) 16: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND _zval_dtor_func 17: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLDriverConnect 18: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLPutData 19: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND zend_fetch_resource 20: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strchr@GLIBC_2.2.5 (2) 21: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND php_info_print_table_row 22: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND _php_stream_stat 23: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLGetDiagRec 24: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLDescribeCol 25: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND _erealloc 26: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND php_pdo_get_exception 27: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND zend_hash_index_find 28: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND zend_declare_class_constant_long 29: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ 30: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLCloseCursor 31: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLSetEnvAttr 32: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND php_error_docref0 33: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND php_info_print_table_end 34: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND _safe_malloc 35: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.14 (4) 36: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLConnect 37: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND zend_throw_exception_ex 38: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND php_file_le_stream 39: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLDescribeParam 40: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND php_info_print_table_header 41: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND php_pdo_register_driver 42: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLColAttribute 43: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND php_pdo_get_dbh_ce 44: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLPrepare 45: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND _ecalloc 46: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLSetConnectAttr 47: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __strcpy_chk@GLIBC_2.3.4 (5) 48: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND _convert_to_string 49: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLExecute 50: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND _efree 51: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLExecDirect 52: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND zval_is_true 53: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLSetCursorName 54: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLDisconnect 55: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _Jv_RegisterClasses 56: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND _php_stream_read 57: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND add_next_index_string 58: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND _estrndup 59: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLEndTran 60: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND _emalloc 61: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLNumResultCols 62: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLGetData 63: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND php_file_le_pstream 64: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND _zval_copy_ctor_func 65: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable 66: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLBindParameter 67: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLGetCursorName 68: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND add_next_index_long 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLSetStmtAttr 70: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLAllocHandle 71: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND php_info_print_table_start 72: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLBindCol 73: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.2.5 (2) 74: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND spprintf 75: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strstr@GLIBC_2.2.5 (2) 76: 0000000000000000 0 FUNC GLOBAL DEFAULT UND SQLMoreResults 77: 0000000000206438 0 NOTYPE GLOBAL DEFAULT 23 _edata 78: 0000000000206440 0 NOTYPE GLOBAL DEFAULT 24 _end 79: 0000000000002310 8 FUNC GLOBAL DEFAULT 11 get_module 80: 0000000000206438 0 NOTYPE GLOBAL DEFAULT 24 __bss_start 81: 0000000000001ac0 0 FUNC GLOBAL DEFAULT 9 _init 82: 00000000000045a4 0 FUNC GLOBAL DEFAULT 12 _fini Quote Link to comment https://forums.phpfreaks.com/topic/285467-pdo_parse_params-error-in-pdo_odbcso-whenever-php-starts-in-fedora-20/ Share on other sites More sharing options...
requinix Posted January 18, 2014 Share Posted January 18, 2014 So you have extension=pdo_odbc.soin both your php.ini and in a pdo_odbc.ini file? What if you remove it from the php.ini? Quote Link to comment https://forums.phpfreaks.com/topic/285467-pdo_parse_params-error-in-pdo_odbcso-whenever-php-starts-in-fedora-20/#findComment-1465654 Share on other sites More sharing options...
purkinje Posted January 20, 2014 Author Share Posted January 20, 2014 I'm trying to get my vpn connection working to my work computer, which is where the problem lies. I'll get back to you on how your suggestion worked once I get the vpn working or I get back to work Monday. Quote Link to comment https://forums.phpfreaks.com/topic/285467-pdo_parse_params-error-in-pdo_odbcso-whenever-php-starts-in-fedora-20/#findComment-1465820 Share on other sites More sharing options...
purkinje Posted January 20, 2014 Author Share Posted January 20, 2014 So you have extension=pdo_odbc.soin both your php.ini and in a pdo_odbc.ini file? What if you remove it from the php.ini? That fixed it! Thanks for your help!! Quote Link to comment https://forums.phpfreaks.com/topic/285467-pdo_parse_params-error-in-pdo_odbcso-whenever-php-starts-in-fedora-20/#findComment-1465860 Share on other sites More sharing options...
requinix Posted January 20, 2014 Share Posted January 20, 2014 Alright, so the explanation of why: php.ini gets loaded before anything in the php.d directory. That means your extension=pdo_odbc.so was executed before any other extensions could be loaded, however it's required that you load the PDO extension before you load any PDO drivers. So PHP bailed. It then started reading stuff from php.d, including the parts where it was told to load pdo.so and pdo_odbc.so; those were in the right load order so it all worked and you still got your extension in the end. So the moral of the story is that if you have a php.d (or other similar directory) then that's where extension loading should be done - not the php.ini. Quote Link to comment https://forums.phpfreaks.com/topic/285467-pdo_parse_params-error-in-pdo_odbcso-whenever-php-starts-in-fedora-20/#findComment-1465881 Share on other sites More sharing options...
purkinje Posted January 20, 2014 Author Share Posted January 20, 2014 That makes a lot of sense. Thanks for the clear, concise explanation, requinix! You're a life-saver. Quote Link to comment https://forums.phpfreaks.com/topic/285467-pdo_parse_params-error-in-pdo_odbcso-whenever-php-starts-in-fedora-20/#findComment-1465935 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.