0

*First of all don't answer "php.ini >> uncomment extension=pgsql.so and restart httpd". did that millions of times, did not solve my problem.

*Tried hundreds of methods described in different sites including stackoverflow, but unfortunately did not work for me (I am leaning Linux >> noob)

INFO: httpd 2.2.15, php 5.6.26 (remi-php56), CentOS 6.8, postgresql 8.2.9

Error 1:

Fatal error: Call to undefined function mb_convert_encoding() in /var/www/html/bancarella_dev/config.php on line 6

Error 1 was solved by:

yum install php-mbstring
service httpd restart

Error 2:

Fatal error: Call to undefined function pg_connect() in /var/www/html/bancarella_dev/dbconnect.php on line 69

To solve Error 2 I did :

yum install php-pgsql
service httpd restart

But it did not solve the Error 2

To see what extensions are loading, I created a test file "test.php"

Code:

$isPgsql =  extension_loaded('pgsql') ? 'yes':'no';

echo "pgsql loaded: {$isPgsql}" ;

print_r(get_loaded_extensions());

Output of test.php:

pgsql loaded: no

Array
(
    [0] => Core
    [1] => date
    [2] => ereg
    [3] => libxml
    [4] => openssl
    [5] => pcre
    [6] => zlib
    [7] => filter
    [8] => hash
    [9] => Reflection
    [10] => SPL
    [11] => session
    [12] => standard
    [13] => apache2handler
    [14] => bz2
    [15] => calendar
    [16] => ctype
    [17] => curl
    [18] => mbstring
    [19] => fileinfo
    [20] => ftp
    [21] => gettext
    [22] => iconv
    [23] => exif
    [24] => PDO
    [25] => Phar
    [26] => sockets
    [27] => sqlite3
    [28] => tokenizer
    [29] => pdo_pgsql
    [30] => pdo_sqlite
    [31] => json
    [32] => zip
    [33] => mhash
)

SO, mbstring is loaded (that's why error 1 was solved).

From the array you can see that pdo_pgsql is also loaded but pgsql is not.

Why? still getting:

Call to undefined function pg_connect()

Please help.

  • Check if you edited the correct php.ini. you can see the php.ini in use with phpinfo(); – Gerald Schneider Oct 14 '16 at 9:07
  • With packaged extension, you NEVER have to change anything in the .ini. Each package provide the /etc/php.d/foo.ini which does its job. Output of "php -v" and "php -m" will help. (also "rpm -Va php*") – Remi Collet Oct 14 '16 at 13:53
  • BTW, CentOS 6.8 provides postgresql 8.4.20, not 8.2.9 – Remi Collet Oct 14 '16 at 14:08
  • @RemiCollet I am really glad that you mentioned something helpful. I was meant to install latest version of postgresql but unfortunately client forced to install a particular version "8.2.9" (may be because of legacy of their system). Now what to do ? The database is live in client's system, so I can't do anything to postgres. How can I solve it now? – Hassan Tareq Oct 17 '16 at 0:37
  • Another thing I wanna know is that I asked this question here, is it ok or should I ask this type of question in stackoverflow or unix.stackexchange or dba.stackexchange? – Hassan Tareq Oct 17 '16 at 0:41
0

I updated PostgreSQL (as @RemiCollet suggested) and everything is working properly.

yum install postgresql96*  
service postgresql-9.6 initdb  
chkconfig postgresql-9.6 on  
service postgresql-9.6 start  

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.