Setting up Postgresql to work with my local dev - php

I have Snow Leopard and am using the default apache. I installed postgresql via macports. So now I can do a psql from a terminal (I tried but failed to do a install of php5 through macports but there was an error)
I have enabled php5 and restarted the apache so now I have php. But for the life of me I cannot figure out to hook up postgresql to work with php. I'm trying to do a pg_connect() and I get
"Fatal error: Call to undefined function pg_connect() in /private/var/www/html/sheep/connect.php on line 4"
I have put
extension=pgsql.so
extension=pdo_pgsql.so
In the php.ini file. My phpinfo says my extension_dir=/usr/lib/php/extensions/no-debug-non-zts-20090626
I went to /usr/lib/php/extensions/no-debug-non-zts-20090626 directory on my mac and actually put pgsql.so and pdo_pgsql.so in that directory from MAMP. I did a locate in the terminal for pgsql.so and it existed in my MAMP directory. I don't want to use MAMP anymore but thought maybe I could move the .so file and use it.
Do I have to recompile php with postgresql? Do I have to do something special to get a non MAMP pgsql.so file? I didn't know what pdo_pgsql.so but I thought I would try it so that is why it is in there.

The easiest way is jsut to use all the packages from Macports:
sudo port install apache2 postgresql83 php+postgresql83+mysql5+pear+apache2
Otherwise you are going to have to download source and compile manually... you cant use the binaries provided by mamp unless you use mamp.

Related

Fatal error: Call to undefined function sqlsrv_connect() using wamp php 5.5.12

I am trying to connect to a Azure data base. I have read many other stack overflow answers but they did not work for me:
-I have downloaded all the drivers that Azure offers to you. They are in
C:\wamp\bin\php\php5.5.12\ext folder:
-I have added to the system variable the path to extensions folder.
-I have set the extension in both php.ini files (inside the apache and php folders).
-Extensions have been set like
extension=php_sqlsrv_5X_ts.dll
extension=php_pdo_sqlsrv_5X_ts.dll and like extension=C:/wamp/bin/php/php5.5.12/ext/php_sqlsrv_5X_ts.dll extension=C:/wamp/bin/php/php5.5.12/ext/php_pdo_5X_ts.dll
Where X means that I have tried 53, 54, 55 and 56.
-I restart all wamp services every single time that I try new changes.
-I have even tried with IISExpress.
-It is still giving me this error and I can't see "sqlsvr" when I use phpinfo().
what more I should do? I have been suffering this for weeks.
I use this XAMPP with PHP 5.5.34 at https://www.apachefriends.org/download.html to have the test to enable the sqlsrv extension of PHP.
You can refer my steps:
After install the XAMPP application, run xampp-control.exe, click config=>PHP(php.ini) to check the extension folder.
Download the MSSQL driver for PHP in 3.2 version from https://msdn.microsoft.com/en-us/library/cc296170%28v=sql.105%29.aspx?f=255&MSPPError=-2147217396. Uncompress it.
Copy php_pdo_sqlsrv_55_ts.dll and php_sqlsrv_55_ts.dll from the uncompressed driver folder to the PHP extension folder (X:\xampp\php\ext in my scenario).
Add extension=php_pdo_sqlsrv_55_ts.dll and extension=php_sqlsrv_55_ts.dll in PHP.ini file.
Start Apache.
Meanwhile, you can use phpinfo() to check the setting of Loaded Configuration File and extension_dir to make sure whether you have configured the correct settings in the definite files and the DLL files in the right folder.
I refer to the practice of Jordi's message in this post: Fatal error:
Call to undefined function sqlsrv_connect() in C:\xampp\htdocs
xampp3.2.1 + php 5.5 + sql server 2014 Express, x64.
My situation is, transplant xampp folder to a brand new computer.
Done all things need to do. (Download SQLSRV 5.6 (or 5.3 or..), check php.ini path, ...)
Download and install OBDC Driver 13(x64) (or maybe you can try OBDC Driver 11(x64))
Download and install SQL Server® 2014 Service Pack 3 (x64), need to restart the computer.
Download and install Visual C++ Redistributable VS2012 Update4 (x86)
Restart Apache
Then it can work!!!!!
I have been searching for a solution to this problem for several days and hope to help more people.

Call to undefined function pg_escape_string() [duplicate]

I am trying to connect to my database (remote server) which has PostgreSQL installed in it. My PHP code is trying to connect to the database using pg_connect(), but I get the error saying:- "Fatal error: Call to undefined function pg_connect() in /var/www/website/functions.php on line 82".
The line 82 simply is:
$db = pg_connect($conn_string);
where $conn_string = "host=".$hostname." port=5432 dbname=".$dbname." user=".$db_user." password=".$db_password.""
(all variables defined earlier)
I checked many forums and the only solution suggested was locating the php.ini file which contains a line:- extension = pgsql.so (for UNIX) and extension = php_pgsql.dll (for Windows).
This statement is supposed to be commented and the solution is to uncomment it. I have tried it but still does not change the situation. The remote server has a version later than PostgreSQL v9.0.4 installed.
I then installed PostgreSQL v8.4.8 on to my laptop and ran the website locally using MAMP. At first, Apache crashed for some odd reason, I fixed that problem but again I ended up with the same error as before i.e. Fatal error: Call to undefined function pg_connect()....
I also ran the phpinfo() and it showed that the php version does support the PostgreSQL module.I have spent an entire day searching for the solution but have been unsuccessful. This is my first project developing a website and I am out of wits. Any kinda help will be highly appreciated.
phpinfo() gives me a huge list of things at the terminal but the listings relevant to PostgreSQL are as follows:-
pdo_pgsql
PDO Driver for PostgreSQL => enabled
PostgreSQL(libpq) Version => 9.0.4
Module version => 1.0.2
Revision => $Id: pdo_pgsql.c 306939 2011-01-01 02:19:59Z felipe $
pgsql
PostgreSQL Support => enabled
PostgreSQL(libpq) Version => 9.0.4
Multibyte character support => enabled
SSL support => enabled
Active Persistent Links => 0
Active Links => 0
Directive => Local Value => Master Value
pgsql.allow_persistent => On => On
pgsql.auto_reset_persistent => Off => Off
pgsql.ignore_notice => Off => Off
pgsql.log_notice => Off => Off
pgsql.max_links => Unlimited => Unlimited
pgsql.max_persistent => Unlimited => Unlimited
I had restarted MAMP after every edit I made since it was mentioned in every post I have read so far. I believe that resets both Apache and php.
'pqsql.so' (which is the UNIX equivalent of 'php_pqsql.dll' in Windows) is present in the 'extension' directory. I also copy-pasted the 'pqsql.so' file on to the Apache/bin directory but it did not give me any change.
I am not running php in the command line primarily. I just was curious to see what phpinfo() would give me relevant to pgsql which I have mentioned in my reply above.
I am still working on the tools you have mentioned and will respond as soon as I get any results.
Thanks,
H
You need to install the php-pgsql package or whatever it's called for your platform. Which I don't think you said by the way.
On Ubuntu and Debian:
sudo apt-get install php-pgsql
Easy install for ubuntu:
Just run:
sudo apt-get install php5-pgsql
then
sudo service apache2 restart //restart apache
or
Uncomment the following in php.ini by removing the ;
;extension=php_pgsql.dll
then restart apache
Fatal error: Call to undefined function pg_connect()...
I had this error when I was installing Lampp or xampp in Archlinux,
The solution was edit the php.ini, it is located in /opt/lampp/etc/php.ini
then find this line and uncomment
extension="pgsql.so"
then restart the server apache with xampp and test...
Edit. I just noticed you were mentionning MAMP. My advice is for Windows but may be useful if you know what corresponding tools to use.
Things to try:
Have you restarted PHP and Apache since your editing of php.ini?
Is the php_pgsql.dll found in your php\ext directory?
Are you running php as a module? If so, try copying the php_pgsql.dll
file in the Apache\bin directory.
Are you running PHP from the command line with a flag specifying a
different php.ini file?
You could try using a tool such as Sysinternals' Filemon to view what
files are attempting to be accessed when running PHP.
You could try using a tool such as Dependency Walker to look at the dependencies for the postgreSQL DLL, in case you have a missing dependency. Quick search brought up ldd for Unix.
Add 'PHPIniDir "C:/php"' into the httpd.conf file.(provided
you have your PHP saved in C:, or else give the location where PHP
is saved.)
Uncomment following 'extension=php_pgsql.dll' in
php.ini file
Uncomment ';extension_dir = "ext"' in php.ini
directory
I had the same symptom in win7. I got this script:
<?php
phpinfo();
pg_connect("blah");
When I executed the phpinfo.php script via apache (http://localhost/phpinfo.php) then I got the error message:
Call to undefined function pg_connect() in...
When I executed the same script from command line (php phpinfo.php) then I got the expected message:
PHP Warning: pg_connect(): Unable to connect to PostgreSQL server: missing "=" after "blah"
In both cases the expected php.ini was used:
Loaded Configuration File C:\Program Files (x86)\php\php.ini
but the pgsql section was completely missing from the phpinfo in case of the apache-based execution and it was present in the command-line-based execution.
The solution was that I added the following line to the apache httpd.conf:
LoadFile "C:/Program Files (x86)/php/libpq.dll"
It seems that for some reason this file is not loaded automatically when apache runs the php script but it is loaded if I run the php script from the command line.
I hope it helps.
You have to follow these steps:
Open the php configuration file, which is located in the following directory
C: \ xampp \ php \ php.ini
Within that file search the extension section and uncomment the following lines
extension = php_pdo_pgsql.dll
extension = php_pgsql.dll
and restart your apache
I also had this problem on OSX. The solution was uncommenting the extension = pgsql.so in php.ini.default and deleting the .default suffix, since the file php.ini was not there.
If you are using XAMPP, the php.ini file resides in /XAMPP/xampfiles/etc
install the package needed.
if you use yum:
yum search pgsql
then look at the result and find anything that is something like 'php-pgsql' or something like that. copy the name and then:
yum install *paste the name of the package here*
For php 5.4 on Centos 6.10, we include these lines in php.ini
extension=/opt/remi/php54/root/usr/lib64/php/modules/pdo.so
extension=/opt/remi/php54/root/usr/lib64/php/modules/pgsql.so
extension=/opt/remi/php54/root/usr/lib64/php/modules/pdo_pgsql.so
It works.
I encountered this error and it ended up being related to how PHP's extension_dir was loading.
If upon printing out phpinfo() you find that under the PDO header PDO drivers is set to no value, you may want to check that you are successfully loading your extension directory as detailed in this post:
https://stackoverflow.com/a/14786808/2578505
On Gentoo, use USE flag postgres in /etc/portage/make.conf and re emerge "emerge php"
Uncommenting extension=php_pgsql.dll in the php.ini configuration files does work but, you may have to also restart your XAMPP server to finally get it working. I had to do this.
The solution has to do with the fact that your the file holding your php configurations. i.e php.ini has uncommented the extension responsible for acting as the middleman between php and postgres, by placing a ";" in front of the statement "extension=pdo_pgsql"
Quick Fix
Open the php.ini file in your favourite editor. (atom 🙌)
Search for the line "extension=pdo_pgsql", which is under the "Dynamic Extensions" section. (a simple ctrl + f) would get you there quick.
Remove the ";" in front of the line ";extension=pdo_pgsql".
Restart your server.
Go fix more errors like a rock star. 👍
If you got php5.6 using the ppa repository http://ppa.launchpad.net/ondrej/php/ubuntu,
then you should install the package using:
sudo apt install php5.6-pgsql
Finally, if you use apache2, restart it:
sudo service apache2 restart
For those of you who have this problem with PHP 5.6, you can use the following command:
yum install php56w-pgsql
For a list of more package names for PHP 5.6, open the following link and scroll down to packages:
PHP 5.6 on CentOS/RHEL 7.0 and 6.6 via Yum
In windows OS find this in php.ini "php_pgsql.dll" and remove the ";" in the extension then that's it :) Cheeers!

Add SqLite to PHP5

I'm using Ubuntu 14.04 64 bit and installed the php5 package from the repositories which brought Apache with it. Php itself works but when I try to use new SQLiteDatabase([...]), the error
Fatal error: Class 'SQLiteDatabase' not found in [...] on line [...]
is printed.
The php.ini in use is /etc/php5/apache2/php.ini (according to phpinfo() (link to the website it prints)). I noticed that in the php.ini the block
[sqlite]
; http://php.net/sqlite.assoc-case
;sqlite.assoc_case = 0
[sqlite3]
;sqlite3.extension_dir =
doesn't set an extension directory. I tried finding files called sqlite3 on my system and putting a path to their directories in there, but it didn't work (and I restarted my machine after changing the php.ini).
The package php5-sqlite3 doesn't exist for Ubuntu 14.04 but php5-sqlite does and I installed it before trying anything else. I then also installed the packages sqlite3 and sqlite, but again: I doesn't work.
I have found a solution. So, according to http://stevenclark.info/wp/fatal-error-class-sqlitedatabase-not-found-in/
As of PHP 5.4 the SQLiteDatabase class was removed to make way for
SQLite 3.
So, you need to use this:
$db=new SQLite3("db.sqlite");

Configuring mongodb on MAMP

So I've tried almost all the tutorials I've found here and on other sources but the problem is always the same. The extension is not installed when I call the phpinfo method.
I've added the file mongo.so to the extensions folder and I've called it on the php.ini as extension=mongo.so.
I'm using MAMP 2.2 on Mavericks and the php version is 5.5.3.
Appreciate any kind of help.
The output of phpinfo() will tell you which php.ini file (if any) is in use.
You have to modify that php.ini file and add extension=mongo.so and then restart your webserver.
One thing you need to keep in mind when you are installing the MongoDB driver for MAMP is the pecl command you are using is actually the MAMP command, not some alternative PHP install you may have on your system.
To do this, locate the PHP binary distributed with MAMP, and the use the full path to the pecl command of the MAMP installation.

php curl works from cli but not from apache

I can't get cURL to work from inside Apache by any means. It's actually fairly strange too provided that:
I can execute my PHP pages from the CLI and it POSTs my requests perfectly fine
When I look at my error logs, I get "PHP Fatal error: Call to undefined function curl_init()" as if the extension isn't installed at all. Similarly, a quick `phpinfo()` also yields such as if the extension isn't installed.
Additionally, when I built PHP, I opted the "--enable-curl" flag.
You are probably not loading the extension in the appropriate php.ini. The file should include something like:
[PHP_CURL]
extension=php_curl.dll
Also, --enable-curl is not a PHP configure option. --with-curl=[DIR] is the one you'd want. Check out the cURL installation instructions.
php_curl.dll should be inside PHP's ext directory when configured correctly.
I had same problem after installing php5-curl. I rebooted apache and that fixed it.
sudo /etc/init.d/apache2 restart for ubuntu 12.04
I had similar problem - worked from cli, silently failed from Apache 2.4
I've tried:
1) copying ssleay32.dll and libeay32.dll from php folder into apache\bin folder - didn't work
2) deleting ssleay32.dll and libeay32.dll from apache\bin folder completely - WORKED.
You should restart apache server each time you make change to make it work.
Also you should install both x86 and x64 versions of C++ Resistributable Visual Studio from Microsoft.

Categories