## 11\. PHP CMS - XAMP 64 bit on Windows 10, flat files CRud (u, d in Op.Sys - WYSIWYG SimleMDE or Summernote) or relational DB tblrows CRUD
Revised 2020.03.26    Code download : [**https://github.com/slavkoss/fwphp**](https://github.com/slavkoss/fwphp)     
I made **B12phpfw ver. 6** code skeleton on which are modules Mnu, Blog (Msg), Mkd and many PHP learning examples. 

### Conclusion for this and my previous 10 posts
Posts are organized as PHP learning book, so I change previous posts periodically !

### 5W of every activity (highest ideas, categories, eg in journalism...)

`who`: Web site - menu & CRUD code skeleton applied to 3 modules (wrong to say applications) : "Mnu", "Blog (Messages, Msg)", "Mkd" in dirs :

1.  WEBSERVERDOCROOT\\fwphp\\www (fwphp is group of applications, www is menu appl consisting of one module)
2.  WEBSERVERDOCROOT\\fwphp\\glomodul\\blog (**glomodul** is "application global modules" = group of global modules, )
3.  WEBSERVERDOCROOT\\fwphp\\glomodul\\mkd

`where`(is code) : All Sites level Globals, Modules Globals, Menu code skeleton, Config classes, Crud classes. 

`when`: Clear visible programming **steps** - **signal flow,** **data flow** & **code flow** 

`what`: Basic Menu & CRUD code skeleton for (who) 

`how`:

1.  FUNCTIONAL (DECLARATIVE) NAMING - descriptions of WHAT, NOT HOW STEPS -eg not programming steps M, V, C. Directory named invoice\_fmb, means bussiness proces, not how steps (ee not 3 dirs M, V, C for all modules - fmb-s) !
2.  index.php is MAIN MODULE'S SINGLE ENTRY POINT ee all (submenus) calls go through this script. Here is **configuration minimized, CONVENTIONS maximized**. Same all other modules.
3.  **simple OWN DEBUGGING** and XDEBUG.
4.  CLASSES FOR: Config, (Controllers), Models (CRUD), not for Views but could be.
5.  namespaces & own autoloading class scripts. Composer's PSR-4 is problem for not 3 dirs M, V, C for all modules but **each module in own dir (huge difference)** ?
6.  pagination in Blog pages
7.  beautiful urls without web server url rewritting (see QS="?" constant.
8.  search/filtering/sort in Blog pages
9.  password\_verify and password\_hash functions explained (in z\_examples)
10.  RTE (Rich Text Edit) markdown (SimpleMDE & Parsedown MD2HTML) or HTML (Summernote)

`why`: Not found hows above in learning sources : Simplest possible code skeleton, newest PHP coding style, good code explanations - code help.    

### Main (Root) module contains main index.php

[www](https://github.com/slavkoss/fwphp/tree/master/fwphp/www "Mnu module") subdir in fwphp dir contains root module, site's index.php. Has links on many test-learn examples.

### [Mkd](https://github.com/slavkoss/fwphp/tree/master/fwphp/glomodul/mkd "Mkd module") module is Dreamweaver replacement

Can WYSIWYG edit:

1.  markdown using SimpleMDE or other
2.  or html using Summernote or other.

No relational database CRUD (so code is simpler) but similar, based on same **B12phpfw** fw (program skeleton) as [**Msg**](https://github.com/slavkoss/fwphp/tree/master/fwphp/glomodul/blog "Blog, Msg module") realational DB tables rows PDO CRUD module, so Mkd is good for learning MVC framework skeleton coding. I think B12phpfw is best-simplest DB PDO CRUD framework (for framework haters which also am I partially: it is not framework, it is **standardized basic code skeleton**) . Why version 6 ? B12phpfw is good example how small but important changes in fw code cause:

1.  lot of work
2.  and when done much simpler use of basic code skeleton.

 
<br /><br /><br />
### PREREQUISITES FOR PHP WEB DEVELOPMENT

### 1\. XAMPP 64 bit, php 7.4.2 [https://www.apachefriends.org/download.html](https://www.apachefriends.org/download.html) (I do not use WAMP SERVER anymore)

If no XAMPP (more work) : PHP (for Windows **thread safe**) : php 7.4.x needs VC15 or VS16 (Visual Studio 2017 or 2019 compiler respectively) Apache : https://www.apachelounge.com/download/

### 2\. CONFIG SCRIPTS see 00info\_php2.php - all config scripts are here

J:\\xampp\\apache\\conf\\httpd.conf J:\\xampp\\apache\\conf\\extra\\httpd-vhosts.conf C:\\Windows\\System32\\drivers\\etc\\hosts J:\\xampp\\php\\php.ini  

### 3\. CONNECT PHP 7.2.4 TO OracleXE 11.2

ORACLE 11g PDO & OCI8 EXTENSION - OPTIONAL

**php\_pdo\_oci.dll** comes with XAMPP. 

In php.ini **extension=pdo\_oci** and **extension=php\_oci8\_11g**.dll (.dll is optional, not required) 

oci8.default\_prefetch = 100

[https://pecl.php.net/package/oci8](https://pecl.php.net/package/oci8) (for XAMPP on Windows **thread safe**) ver. [2.2.0](https://pecl.php.net/package/oci8/2.2.0) 

2018-12-10 copy 1\_php\_oci8-2.2.0-7.4-ts-vc15-x64.zip to J:\\xampp\\php\\ext and unzip php\_oci8\_11g.dll . 

CLI PHP : J:\\xampp\\php\\php.exe (before I used J:\\wamp64\\bin\\php\\php7.2.9\\php.exe) 

ORACLE 11g OCI8 EXTENSION ON NETWORK : OR for PC on on network ? : Feb 6 2018 Christopher Jones : ORACLE CLIENT LIBRARIES of same 32-bit or 64-bit architecture as PHP and are first in PATH. If you use Instant Client you need to have the correct VS Redistributable, see

1.  64 bit http://www.oracle.com/technetwork/topics/winx64soft-089540.html or
2.  32 bit http://www.oracle.com/technetwork/topics/winsoft-085727.html

### 4\. COMPOSER DEPENDENCY MANAGER FOR PHP (CODE DOWNLOADER)

For XAMPP on WINDOWS just install [https://getcomposer.org/Composer-Setup.exe](https://getcomposer.org/Composer-Setup.exe) from page [https://getcomposer.org/download/](https://getcomposer.org/download/) . 

WAMP does not like php in PATH variable. So composer update does not work. \[\*master\] J:\\awww\\w\\fwphp> J:\\wamp64\\bin\\php\\php7.2.9\\php.exe C:\\composer\\composer.phar update (1) or better C:\\composer\\composer7.bat : Save the file along with the originally installed composer.bat @echo OFF :: in case DelayedExpansion is on and a path contains ! setlocal DISABLEDELAYEDEXPANSION J:\\wamp64\\bin\\php\\php7.2.9\\php.exe "%~dp0composer.phar" %\* Now call php7 composer with the new command: \[\*master\] J:\\awww\\w\\fwphp> composer7 selfupdate (1.7.2, Use composer self-update --rollback to return to version 1.7.1) composer7 update (2) is same as (1)

### 5\. GIT MULTIUSER SCRIPTS SYNCHRONIZER see Git book
see https://github.com/slavkoss/fwphp#swfw 




<br /><br /><br />
#### WAMP 64 bit 2018\-05\-25 on Windows 10 64 bit - I do not use WAMP or ZWAMP anymore

Seems simpler than ZWAMP - no entries in PATH variable. Composer works after reinstal (asks php.exe dir) - see below.

#### Composer manual Command-line installation - I do not use this

For XAMPP on WINDOWS just install [https://getcomposer.org/Composer-Setup.exe](https://getcomposer.org/Composer-Setup.exe) from page [https://getcomposer.org/download/](https://getcomposer.org/download/) .

To automate the installation **on Linux only**, use [the guide on installing Composer programmatically](https://getcomposer.org/doc/faqs/how-to-install-composer-programmatically.md).

1.  **Deinstall Composer if installed**
2.  **cd J:\\wamp64\\www\\fwphp** J:\\wamp64\\bin\\php\\php5.6.35\\php.exe -v PHP 5.6.35 (cli) (built: Mar 29 2018 14:27:15) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
3.  J:\\wamp64\\bin\\php\\php5.6.35\\php.exe \-r "copy('https://getcomposer.org/installer', 'composer-setup.php');"J:\\wamp64\\bin\\php\\php5.6.35\\php.exe -r "if (hash\_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP\_EOL;" outputs : Installer verifiedJ:\\wamp64\\bin\\php\\php5.6.35\\php.exe composer-setup.phpoutputs : Composer (version 1.6.5) successfully installed to: J:\\wamp64\\www\\fwphp\\composer.phar Use it: php composer.pharJ:\\wamp64\\bin\\php\\php5.6.35\\php.exe -r "unlink('composer-setup.php');"The 4 lines above will, in order:
    1.  Download the installer to the current directory
    2.  Verify the installer SHA-384 which you can also cross-check here [https://composer.github.io/pubkeys.html](https://composer.github.io/pubkeys.html)
    3.  Run the installer - will check some php.ini settings, warn you if they are set incorrectly, and then download the latest composer.phar in the current directory
    4.  Remove the installer
4.  Create a new composer.bat file alongside composer.phar: J:\\wamp64\\www\\fwphp\>echo @J:\\wamp64\\bin\\php\\php5.6.35\\php.exe "%~dp0composer.phar" %\*>composer.bat
5.  **Add directory J:\\wamp64\\www\\fwphp to your PATH environment variable if it isn't already.** For information on changing your PATH variable, please see this article [https://www.computerhope.com/issues/ch000549.htm](https://www.computerhope.com/issues/ch000549.htm) and/or use Google.
6.  Close your current terminal. Test usage with a new terminal: C:\\Windows\\System32>**composer -V** Composer version 1.6.5 2018-05-04 11:44:59