Sep 24, 2008

How To Install PostgreSQL And phpPgAdmin Support In XAMPP


!! This article was written years ago and probably irrelevant today !!

XAMPP is an easy to install Apache distribution containing MySQL, PHP and Perl, plus many additional modules. The whole package is well integrated and can save a lot of time and hassle for the inexperienced web developer. It's available on four platforms Windows, GNU/Linux, Mac OS X and Solaris which gives a lot practical benefit to those who use it.

PostgreSQL is a well known database that may be more suitable for some tasks or workloads than others. phpPgAdmin is a web-based administration tool for PostgreSQL, exactly as phpMyAdmin for MySQL.

1. Install PostgreSQL and phpPgAdmin in Windows :

1.1 Install PostgreSQL
Assuming you have already download and installed XAMPP into c:\XAMPP, go and get the latest version of PostgreSQL for Windows. Download the version with the installer, not the one with only binaries.

Usually, it's a .zip package, extract it and install Microsoft Visual C++ 2005 redistributable vcredist_x86.exe first!

Now, double-click postgresql-8.3.msi, choose your install language, then have a look at installation notes as you may find useful info there.

Change the default install folder to c:\xampp\pgsql
The default install options in the following step are OK, but select everything you are unsure.

Enter a password for the user account "postgres" and leave everything as is in Service Configuration, then proceed to the next step. (You will need that password for future upgrades)

In Initialize Database Cluster:
  • Enable "Accept connections on all addresses, not just localhost" if you want.
  • Choose a different Encoding for both Server and Client (i.e: UTF8 for unicode support)
  • Enter a password for the DB administrator account "postgres".
Proceed as PL/pgsql is enabled by default in Procedural Langauges, then select Contrib Modules you want (select everything if you are unsure). Click on Install.

1.2 Install phpPgAdmin
Go and get the latest phpPgAdmin zip package and extract it into C:\xampp\phpPgAdmin\ . Make sure the files and folders extracted are in that folder, not within another sub-folder.

Then open "config.inc.php" found in C:\xampp\phpPgAdmin\conf\ and set "extra_login_security" to false
$conf['extra_login_security'] = false;

Now, open c:\xampp\php\php.ini and make sure "extension=php_pgsql.dll" is uncommented

Finally, open c:\xampp\apache\conf\extra\httpd-xampp.conf and in section <IfModule mime_module> add
Alias /phppgadmin "c:/xampp/phpPgAdmin/"
<Directory "c:/xampp/phpPgAdmin">
    AllowOverride AuthConfig
    Order allow,deny
    Allow from all
</Directory>

That's all, you can now access phpPgAdmin from your web browser with http://localhost/phppgadmin/

Notes:
  • For more info about PostgreSQL Installer visit http://pginstaller.projects.postgresql.org/FAQ_windows.html
  • You may use Stack Builder shipped with PostgreSQL to add new functionalities.
  • Visit the phpPgAdmin FAQ for any further info http://phppgadmin.sourceforge.net/?page=faq

For Ubuntu Linux users I recommend this article.

35 comments:

  1. spot on, one thing different in my install, was the location of the php.ini file. The one being used resides in c:\xampp\apache\bin\

    ReplyDelete
  2. great! it works.
    thank you very much.

    ReplyDelete
  3. help!! in the initialize database cluster. I encountered an error saying.. "THe PostgreSQL data directory must be on a NTFS formatted volume. If you wish to install the data directory on another type of partition.. etctec"

    ReplyDelete
  4. The message is clear, you need an NTFS partition for that.

    NTFS offers advanced access control and security.

    ReplyDelete
  5. when i type this in my web browser -> http://localhost/phppgadmin/
    it can't establish connection to the server at localhost. (The installation was successful. I followed your instruction)

    ReplyDelete
  6. Did you make sure the Apache web server was running?

    ReplyDelete
  7. how would i know if it is already running?

    ReplyDelete
  8. ok. i got. its already working. thanks :D

    ReplyDelete
  9. My C partition is on FAT32, but I have NTFS partition on drive E.
    Does your instruction work on other drive (i.e: drive E) instead of drive C?

    ReplyDelete
  10. Yes, if you install everything on drive E you should replace C:/ with E:/ in the text you added into <IfModule mime_module>

    ReplyDelete
  11. I got an attention...

    Access forbidden!
    You don't have permission to access the requested object. It is either read-protected or not readable by the server.

    ReplyDelete
  12. I'm afraid I can't help with that error. Did you receive it when you were trying to install PostgreSQL or afterwards when developing ?

    ReplyDelete
  13. reg: [You don't have permission to access the requested object. It is either read-protected or not readable by the server.]

    Directory "E:/xampp/phpPgAdmin"
    // E: NTFS but C FAT32

    phpPgAdmin must be in the same partition as apache

    ReplyDelete
  14. thanks a lot dude
    its working

    ReplyDelete
  15. @Anonymous: Thanks :)
    @Harsha: You're welcome! :)

    ReplyDelete
  16. Help here
    run next error started

    cannot modify header information - headers already sent by (output started)
    erro Misc.php 342
    Misc on line 359

    ReplyDelete
  17. Because you use XAMPP 1.7.2 with PHP 5.3!
    So I uninstall 1.7.2 and install 1.7.1

    ReplyDelete
  18. hi anonymous, how did you know 1.7.2 is not working with phppgadmin? and why?

    ReplyDelete
  19. Try it, and you'll know

    ReplyDelete
  20. i have an error after login "Virtual Class -- cannot instantiate"
    pls give me a solutons

    ReplyDelete