Revised November 2019.

1\. Install Apache, PHP, Oracle DB 11g XE & 11g, Oracle Forms 6i and 12c & Reports on Win 10 (all 64bit)
========================================================================================================

### **[HOME](http://phporacle.altervista.org/php-oracle-main-menu/ "Main menu")   Downloads are now: [https://github.com/slavkoss/fwphp](https://github.com/slavkoss/fwphp)**

26.oct.2019 I use 64 bit XAMPP: PHP 7.3.7 AND APACHE 2.4.38. on Windows 10 64 bit.**PDO: mysql, oci, sqlite ARE WORKING.**Oracle db 11gXE (no more E. Rangel pdooci – pdo sintax on oci8 program layer)**.  
**

I tried 4-5 WAMP server SW. WAMP and ZWAMP are ok but XAMPP unzip is  simplest – almost 1 click . WAMP has problem with composer installations from Windows command line. Next shows more details about ZWAMP (I do not use ZWAMP recently) :

1.  Unzip **zwamp-x64-2.2.1-full.zip** to J:\\zwamp64
2.  Rename old J:\\zwamp64\\vdrive\\.sys\\Apache2 dir to Apache2\_2\_4\_16
3.  Download Apache : [http://www.apachelounge.com](https://www.apachelounge.com/)  
    Create dir J:\\zwamp64\\vdrive\\.sys\\Apache2.  
    Unzip **httpd-2.4.20-win64-VC14.zip**– it’s Apache24 folder content to :  
    **ServerRoot** J:/zwamp64/vdrive/.sys/Apache2 (or c:/Apache24 = ServerRoot) in httpd.conf  
    Default folder for your your webpages is DocumentRoot  
    **DocumentRoot** J:/zwamp64/vdrive/.sys/Apache2/htdocs  
    Directories  
    ScriptAlias – also when you use extra folder config file(s) change to your location there
4.  No changes in J:\\zwamp64\\vdrive\\.sys\\Apache2\_2\_4\_16\\conf\\extra
5.  changes in J:\\zwamp64\\vdrive\\.sys\\Apache2\\conf :  
    copy here own httpd.conf ver 2.4.16 to conf dir (rename original before copying)  
    copy here own vhosts.conf ver 2.4.16 to conf dir
6.  J:\\zwamp64\\vdrive\\.sys\\Apache2\\conf\\**httpd.conf** :  
    LoadModule php7\_module /.sys/php/php7apache2\_4.dll  
    AddType application/x-httpd-php .php# without this OCI8 and PDO MySQL and PDO sqlite are not visible in inet browser  
    are visible in php CLI  
    PHPIniDir /.sys/php
7.  Download PHP:  [http://windows.php.net/download/](https://windows.php.net/download/)**  
    php-7.0.8-Win32-VC14-x64.zip** same unzip as apache zip above.
8.  Downloadnewest oci8-2.1.1 Extension for php 7.0.8 64 bit on Windows 10 64 bit – april 2016 (**older does not work**) :  
    OCI8 is also for E.Rangels PDOOCI.  
    [https://pecl.php.net/package/oci8/2.1.1/windows](https://pecl.php.net/package/oci8/2.1.1/windows)  – Windows dll-s  
    https://pecl.php.net/package/oci8   – for Linux  
    r**eleased by christopher.jones@oracle.com**  
    [https://blogs.oracle.com/opal/entry/php\_7\_oci8\_2\_1](https://blogs.oracle.com/opal/entry/php_7_oci8_2_1)  
    **php\_oci8-2.1.1-7.0-ts-vc14-x64\_Jones\_pecl.php.net.zip  
    Unzip it’s dll-s to: **J:\\zwamp64\\vdrive\\.sys\\php\\ext**  
    Christopher Jones’s oci8-2.1.1 for php 7 :  
    **dir J:\\zwamp64\\vdrive\\.sys\\php\\ext\\php\_oci\*.\*  
    18.04.2016.  05:20   155.136 php\_oci8.dll  
    18.04.2016.  05:20   790.528 php\_oci8.pdb – WHAT IS THIS ?  
    18.04.2016.  05:20   157.184 php\_oci8\_11g.dll  
    18.04.2016.  05:20   790.528 php\_oci8\_11g.pdb  
    18.04.2016.  05:20   158.208 php\_oci8\_12c.dll  
    18.04.2016.  05:20   790.528 php\_oci8\_12c.pdb  
    7 File(s)      2.997.248 bytes
9.  J:\\zwamp64\\vdrive\\.sys\\php\\**php.ini**
10.  2click J:\\zwamp64\\zwamp.exe -> right click **house icon** -> restart  
    \-> started Apache and MySQL. **If not both started very useful is :**  
    J:\\zwamp64\\vdrive\\.sys\\Apache2\\bin>**httpd.exe  
    – this report errors, same as :  
    php -v  
    **PHP 7.0.8 (cli) (built: Jun 21 2016 15:15:15) ( ZTS )  
    Copyright (c) 1997-2016 The PHP Group  
    Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies**  
    or  
    php -r “var\_dump(function\_exists(‘oci\_connect’));”  
    or  
    **C:\\WINDOWS\\system32>php -r “if (! $dbc = oci\_pconnect(‘hr’, ‘hr’, ‘ora7’, ‘UTF8’)) echo ‘\*\*\*\*\* 1. UNSUCCESSFULL db connect \*\*\*\*\*’; else {echo \\”\\n\\”; echo ‘~~~~~~~~~~~  PARSE-BIND-EXECUTE-FETCH ~~~~~~~~~~’; echo \\”\\n\\”; echo ‘SUCCESSFULL db connect’; echo \\”\\n\\”;  $dml=’SELECT first\_name, phone\_number FROM (SELECT first\_name, phone\_number FROM employees ORDER BY first\_name) where rownum < 3′; echo $dml; echo \\”\\n\\”; $parse\_stid = oci\_parse($dbc, $dml);  if (!$parse\_stid) {   $m = oci\_error($conn);    echo ‘skripta: ‘ . \_\_FILE\_\_ ;   echo’ says neuspio oci\_parse : ‘ ;   echo $m\[‘message’\]; }   $exec\_ret =  oci\_execute($parse\_stid);       echo ‘oci\_execute returned: ‘;     print\_r($exec\_ret);        echo \\”\\n\\”; echo ‘oci\_fetch\_array returned: ‘;  $row = oci\_fetch\_array($parse\_stid, OCI\_ASSOC + OCI\_RETURN\_NULLS); print\_r($row); }”WHICH DISPLAYS:~~~~~~~~~~~  PARSE-BIND-EXECUTE-FETCH ~~~~~~~~~~  
    SUCCESSFULL db connect  
    SELECT first\_name, phone\_number FROM (SELECT first\_name, phone\_number FROM employees ORDER BY first\_name) where rownum < 3  
    oci\_execute returned: 1  
    oci\_fetch\_array returned: Array  
    (  
    \[FIRST\_NAME\] => Adam  
    \[PHONE\_NUMBER\] => 650.123.2234  
    )
11.  Not needed if we use ZWAMP :  
    Install Apache as a service:  
    httpd.exe -k install   httpd.exe -k restart, or stop  
    ApacheMonitor: (not needed if we use ZWAMP):  
    Double click ApacheMonitor.exe, or put it in your Startup folder.

28.11.2015 INSTALLATION APACHE 2.4.16 (Win64)  & PHP 7.0.0 RC5 MSVC14 (Visual C++ 2015) x64 ON J:\\zwamp\\vdrive\\.sys\\Apache2 (& …\\php) OR ON C DISK

Install as a service (not needed if using XAMPP or ZWAMP or WAMP):  
**httpd.exe -k install  
httpd.exe -k  restart**  
**httpd.exe -k stop  **  
ApacheMonitor: Double click ApacheMonitor.exe, or put it in your Startup folder.

Use PGP Signature and/or the SHA Checksums to verify the integrity.  
C:\\gnuwin32\\bin\\sha1sum.exe -help  
sha1sum.exe -b J:\\0downl\\1\_instalirano\\Apache\_httpd-2.4.16-win64-VC14.zip :  
d917094cf13ecea83938aa58058ea7c5c6ef2756  
Checksums created with GPGHash by SmartJuwel  
Creation date: 22.07.2015 with GnuPG Version: 1.4.18  
SHA1-Checksum for: httpd-2.4.16-win64-VC14.zip:  
D917094CF13ECEA83938AA58058EA7C5C6EF2756  
or SHA224-Checksum or SHA256-Checksum or SHA384-Checksum

php[http://windows.php.net/qa/](https://windows.php.net/qa/%2520)For Apache on Windows: Thread Safe

I did not used **Instant Client** :  
Oracle Database drivers for popular languages and environments including Node.js, Python and PHP can use Instant Client to connect to local or remote DBs.  
https://community.oracle.com/thread/1051752 :  
1\. Download 64 or 32-bit Oracle Instant Client – there is no **MSVC14 **build 6.8.2015  
2\. put it somewhere useful (I put it under my php directory)  
3\. Add it to your system’s PATH. (A quick & dirty fix on Windows is to copy  
all of the \*.dll files   from the 11g InstantClient package\* into same dir  
as your webserver’s executable (e.g. httpd.exe).)  
http://www.oracle.com/technetwork/database/features/instant-client/index-100365.html  
4\. Edit your php.ini and uncomment extension=php\_oci8\_11g.dll

I did not 1. to 4. above !

Stories on WEB that excellent (but never finished and abandoned) old 32 bit F6i, R6i SW and new Windows do not work together are not true. See also – they managed same as I (good site, could give more details):  
[Installing Oracle Developer (forms & reports 6i) on Windows 7 64bit](https://windows7bugs.wordpress.com/2010/03/01/installing-oracle-developer-forms-reports-6i-on-windows-7-64bit/)  
and  
[Oracle Developer 6i & Oracle database 11g R2 (11.2.0.1.0)](https://windows7bugs.wordpress.com/2012/12/16/oracle-developer-6i-oracle-database-11g-r2-11-2-0-1-0/)  
Great question to Oracle who says “we do not leave our customers who still use F6i & R6i” – but F6i & R6i can not even be downloaded from Oracle:  
Why 32 bit F6i & R6i can not be patched to be **certificated** on 64 bit 11g and 64 bit Windows ? Oracle Power Objects (SW simmilar to F6i & R6i ) is also abandoned SW.  
Today is modern to make new SW, worse than old (nobody begins new project with F11 & R11 – they are rather applications than development SW) and forget poor bastards who bought abandoned SW. So they cut their expenses (and our lifes). Simmilar stories are Microsoft ASP-VS2008-Silverlight, Google AngularJS 1.x – 2.x, over 100 development SW around…  
Incompetent managers and trade departments cut our lifes, but they should know that life is not child joke.

#### APACHE – USE THREAD SAFE (TS) VERSIONS OF PHP **BINARIES FOR WINDOWS**  
MULTITHREAD CAPABLE BINARIES BUILDS – INTERACTION WITH A MULTITHREADED SAPI AND PHP LOADED AS A MODULE INTO A WEB SERVER.

Use Apache builds provided by [Apache Lounge](https://apachelounge.com/)– PHP official site use their binaries to build Apache SAPIs.

VC9 builds require you to have the _Visual C++ Redistributable for Visual Studio 2008 SP1_ [x86](https://www.microsoft.com/en-us/download/details.aspx?id=5582) or [x64](https://www.microsoft.com/en-us/download/details.aspx?id=15336) installed.  
VC11 builds require to have the _Visual C++ Redistributable for Visual Studio 2012_  [x86 or x64](https://www.microsoft.com/en-us/download/details.aspx?id=30679) installed. and so on

**PECL FOR WINDOWS:**[PECL extensions](https://pecl.php.net/) for Windows is being worked on. Windows DLL can be downloaded right from the[PECL website](https://pecl.php.net/).  
PECL extension [release](https://windows.php.net/downloads/pecl/releases/) and[ snapshot](https://windows.php.net/downloads/pecl/snaps/) build directories are browsable directly.

**Not needed for 64 bit Apache, PHP, 11XE all three on home PC.**.  
Download from [http://www.oracle.com/technetwork/topics/winx64soft-089540.html](http://www.oracle.com/technetwork/topics/winx64soft-089540.html)  
instantclient-basic-windows.x64-12.1.0.1.0.zip (64,939,911 bytes) (cksum – 3658834848)  
extract to:  C:\\Windows\\SysWOW64\\instantclient\_12\_1  
and set it on Win PATH variable + H:\\Apache24\\bin,  
(NO:    THERE ARE MORE PHP INSTALLATIONS  (only 1 Apache):    + H:\\php)

C:\\Apache24\\bin>echo %SystemRoot%  
outputs: C:\\Windows

C:\\Apache24\\bin>path

extension=php\_oci8\_11g.dll (remove the “;” from the start of the line)

Restart Apache (XAMPP or WAMP server)

Open  file to see database name as  
C:\\oraclexe\\app\\oracle\\product\\11.2.0\\server\\network\\ADMIN\\tnsnames.ora  
// D:\\app\\Farhan\\product\\11.2.0\\dbhome\_1\\NETWORK\\ADMIN\\tnsnames.ora

LISTENER\_ORCL =  
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

ORACLR\_CONNECTION\_DATA =  
(DESCRIPTION =  
(ADDRESS\_LIST =  
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))  
)  
(CONNECT\_DATA =  
(SID = CLRExtProc)  
(PRESENTATION = RO)  
)  
)

ORCL =  
(DESCRIPTION =  
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))  
(CONNECT\_DATA =  
(SERVER = DEDICATED)  
(SERVICE\_NAME = orcl.168.1.2)  
)  
)

Service name is “orcl.168.1.2”,  my is: XE :

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = sspc)(PORT = 1521))
    (CONNECT\_DATA =
      (SERVER = DEDICATED)
      (SERVICE\_NAME = XE)
    )
  ) 
ora7 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = sspc)(PORT = 1521))
    (CONNECT\_DATA =
      (SERVER = DEDICATED)
      (SERVICE\_NAME = XE)
    )
  ) 
EXTPROC\_CONNECTION\_DATA =
  (DESCRIPTION =
    (ADDRESS\_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT\_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

ORACLR\_CONNECTION\_DATA =
  (DESCRIPTION =
    (ADDRESS\_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT\_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

See [https://github.com/slavkoss/fwphp/blob/master/fwphp/glomodul/z\_examples/index.php](https://github.com/slavkoss/fwphp/blob/master/fwphp/glomodul/z_examples/index.php)  
for  httpd.conf, vhosts.conf, C:\\Windows\\System32\\drivers\\etc\\hosts, php.ini

 kod[ edit]($web_docroot_url/inc/utl/edservertxt.php)[ phpinfo]($web_docroot_url/phpinfo_inc.php) EOKOD; /\* call it so: kod\_edit\_run( $idx // script\_dir\_path , $idxscript // script\_name , MDURL); // web\_docroot\_url = (Apache) web server URL \*/ }