PHP Classes

File: fwphp/glomodul/www/dev_suite.php

Recommend this page to a friend!
  Classes of Slavko Srakocic   B12 PHP FW   fwphp/glomodul/www/dev_suite.php   Download  
File: fwphp/glomodul/www/dev_suite.php
Role: Auxiliary script
Content type: text/plain
Description: Auxiliary script
Class: B12 PHP FW
Manage database records with a PDO CRUD interface
Author: By
Last change: ver mnu, adrs, msg, mkd. Same module db adapter for any shared db adapter
Date: 1 year ago
Size: 32,785 bytes


Class file image Download
<!DOCTYPE html><html lang="hr"> <head> <title>laragon</title> <title>HTMLofMKD</title> <link rel="stylesheet" href="/zinc/themes/mini3.css"> <!--link rel="stylesheet" href="/vendor/highlight_js/styles/default.c ss"--> <!--Ugly, no lines in tbls --> <!--script src="/vendor/highlight_js/highlight.pack.js"></script--> <style> /* html, body { height: 100%; } body { margin: 10%; padding: 2%; width: 100%; display: table; font-weight: 100; font-family: 'Karla'; } .container { text-align: left; display: table-cell; vertical-align: middle; } .content { text-align: left; display: inline-block; } .container_center { text-align: center; display: table-cell; vertical-align: middle; } .content_center { text-align: center; display: inline-block; } .title { font-size: 96px; } .opt { margin-top: 30px; } .opt a { text-decoration: none; font-size: 150%; } a:hover { color: red; } */ .auto-style1 { margin-left: 80px; } </style> <script> /* document.addEventListener('DOMContentLoaded', (event) => { document.querySelectorAll('pre code').forEach((block) => { hljs.highlightBlock(block); }); }); */ </script> </head> <body style="margin: 1em; padding: 30px 10% 50px 10%; font-size: 1.2em; font-family: Corbel, Arial, Helvetica, sans-serif ; "> <div class="container_center"> <div class="content_center"> <div class="title" title="Laragon"> <h3>PHP version: <?php print phpversion(); ?> <span><a title="phpinfo()" href="../z_examples/00_index_of_important.php">info</a>&nbsp;&nbsp; <!-- a href="../glomodul/z_examples/book_video/" target="_blank">examples</a>&nbsp; --> </span> </h3> <h1>XAMPP portable WEB &amp; MariaDB Server </h1> <p>for PHP server scripting on Windows 10 64 bit</p> <p><strong>2021.10.30</strong> PHP 8.0.12 xampp-portable-windows-x64-8.0.12-0-VS16.7z 89.12 MB, <br>2020.03.30 PHP 7.4.3 (Laragon is still on PHP 7)<br> <a href=""></a>&nbsp; <br>or <a href="http://localhost:8083/dashboard/faq.html"> http://localhost:8083/dashboard/faq.html</a>&nbsp; <br> <a href="http://localhost:8083/dashboard/howto.html"> http://localhost:8083/dashboard/howto.html</a>&nbsp; <br><br> <a href="http://localhost:8083/">http://localhost:8083/</a>&nbsp; <br> <br><a href="http://dev1:8083/">http://dev1:8083/</a>&nbsp; <br><br> <br>SyMenu -&gt; xampp-control.exe called as admin -&gt; click button &quot;Shell&quot; to open Win CLI <br>J:\xampp&gt;php -v <br>PHP 8.0.12 (cli) (built: Oct 19 2021 11:21:05) ( ZTS Visual C++ 2019 x64 ) <br> Copyright (c) The PHP Group <br>Zend Engine v4.0.12, Copyright (c) Zend Technologies <br><br>J:\xampp&gt;composer selfupdate <br>Upgrading to version 2.1.10 (stable channel). <br>Use composer self-update --rollback to return to version 2.0.8 <br><br>J:\xampp&gt;composer -v <br> Composer version 2.1.10 2021-10-29 22:34:57 <br><br> </p> <h2>1. C:\Windows\System32\drivers\etc\hosts</h2> <p>localhost name resolution is handled within DNS itself. <br>```<br> localhost dev1 <br>::1 localhost dev1 <br>```</p> <h2>2. J:\xampp\apache\conf\httpd.conf</h2> <p>Listen 8083 <br>ServerName localhost:8083 <br><br>...<br><strong>To see http://dev1:8083/fwphp/www/ (dev1 is apache virtual host) :<br> </strong>```xml<br>&lt;Directory &quot;J:/awww/www/&quot;&gt;<br>Options Indexes FollowSymLinks Includes ExecCGI<br>AllowOverride All<br>Require all granted<br>&lt;/Directory&gt;<br>```<br><br><strong>Now in J:\xampp\xampp-control.exe :</strong><br>1. buttons &quot;Config&quot;, &quot;Editor&quot; and &quot;Service and port settings&quot; Apache port 8083<br>2. buttons &quot;Start mysql&quot; and &quot;Start Apache&quot;<br><br>http://localhost:8083/ shows : <br> Apache Friends Applications FAQs HOW-TO Guides PHPInfo phpMyAdmin <br> </p> <h2>3. J:\xampp\phpMyAdmin\</h2> <p>change line to be $cfg['Servers'][$i]['host'] = 'localhost'; (not !) <br>buttons &quot;Stop mysql&quot; then &quot;Start mysql&quot; <br> http://localhost:8083/phpmyadmin/ shows Server: localhost <br> Databases : <br>1. information_schema<br>2. mysql<br>3. performance_schema<br>4. phpmyadmin<br>5. test<br><br><strong>my db-s imported</strong><br>Click &quot;Import&quot; link in top toolbar <br>1. J:\\awww\\www\\01_DDL_mysql_blog.sql <br><br><br>To see <a href="http://dev1:8083/fwphp/www/%20(dev1%20is%20apache%20virtual%20host"> http://dev1:8083/fwphp/www/ (dev1 is apache virtual host</a>) : </p> <h2>4. J:\xampp\apache\conf\extra\httpd-vhosts.conf :</h2> <p>First VirtualHost section is default or fallback virtual host, <br> used f or all requests that do not match **ServerName or ServerAlias** <br>in any \&lt;VirtualHost&gt; block. <br>```xml<br>&lt;VirtualHost *:8083&gt;<br> DocumentRoot &quot;/xampp/htdocs/&quot;<br>ServerName localhost<br> &lt;/VirtualHost&gt;<br><strong>sets up a virtual host named dev1 </strong> <br>&lt;VirtualHost *:8083&gt;<br>DocumentRoot &quot;J:/awww/www/&quot;<br>ServerName dev1<br>&lt;/VirtualHost&gt;<br>```<br><br><strong>Self signed certificate comes with xampp :</strong><br>SSLCertificateFile &quot;conf/ssl.crt/server.crt&quot; <br>SSLCertificateKeyFile &quot;conf/ssl.key/server.key&quot; <br><br><strong>To see <a href="https://dev1/fwphp/www/%20(dev1%20is%20apache%20virtual%20host"> https://dev1/fwphp/www/ (dev1 is apache virtual host</a>) :</strong></p> <h2>5. J:\xampp\apache\conf\extra\httpd-ssl.conf</h2> <p><strong>SSL Virtual Host Content</strong><br><br>```xml<br> &lt;VirtualHost _default_:443&gt;<br><br>DocumentRoot &quot;J:/awww/www&quot;<br> ServerName dev1:443<br>ServerAdmin<br>ErrorLog &quot;J:/xampp/apache/logs/error.log&quot;<br>TransferLog &quot;J:/xampp/apache/logs/access.log&quot;<br><br>SSLEngine on<br><br> SSLCertificateFile &quot;conf/ssl.crt/server.crt&quot;<br>SSLCertificateKeyFile &quot;conf/ssl.key/server.key&quot;<br><br>&lt;FilesMatch &quot;\.(cgi|shtml|phtml|php)$&quot;&gt;<br>SSLOptions +StdEnvVars<br>&lt;/FilesMatch&gt;<br> &lt;Directory &quot;J:/xampp/apache/cgi-bin&quot;&gt;<br>SSLOptions +StdEnvVars<br> &lt;/Directory&gt;<br><br>BrowserMatch &quot;MSIE [2-5]&quot; \<br>nokeepalive ssl-unclean-shutdown \<br>downgrade-1.0 force-response-1.0<br><br> CustomLog &quot;J:/xampp/apache/logs/ssl_request.log&quot; \<br>&quot;%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \&quot;%r\&quot; %b&quot;<br><br>&lt;/VirtualHost&gt;<br> <br><br><br>&lt;VirtualHost _default_:443&gt;<br><br># General setup for the virtual host<br>DocumentRoot &quot;J:/xampp/htdocs&quot;<br>#ServerName<br>ServerName localhost:443<br>#ServerAdmin<br>ServerAdmin<br>ErrorLog &quot;J:/xampp/apache/logs/error.log&quot;<br>TransferLog &quot;J:/xampp/apache/logs/access.log&quot;<br><br># SSL Engine Switch:<br># Enable/Disable SSL for this virtual host.<br>SSLEngine on<br><br> SSLCertificateFile &quot;conf/ssl.crt/server.crt&quot;<br><br> SSLCertificateKeyFile &quot;conf/ssl.key/server.key&quot;<br><br>&lt;FilesMatch &quot;\.(cgi|shtml|phtml|php)$&quot;&gt;<br>SSLOptions +StdEnvVars<br>&lt;/FilesMatch&gt;<br> &lt;Directory &quot;J:/xampp/apache/cgi-bin&quot;&gt;<br>SSLOptions +StdEnvVars<br> &lt;/Directory&gt;<br><br><br>BrowserMatch &quot;MSIE [2-5]&quot; \<br>nokeepalive ssl-unclean-shutdown \<br>downgrade-1.0 force-response-1.0<br><br> CustomLog &quot;J:/xampp/apache/logs/ssl_request.log&quot; \<br>&quot;%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \&quot;%r\&quot; %b&quot;<br><br>&lt;/VirtualHost&gt;<br> ```<br><br><br><br><br>## 6. Developing dev1 web site is virtual host, port 8083, dir J:/awww/www<br>I put all my php coding in J:/awww/www, ehich is on Github. In J:\xampp\htdocs are some extern (big) applications for testing.<br> </p> <p>&nbsp;</p> <h1>Laragon portable WAMP Server </h1> <h1>1. Info</h1> <p><strong>laragon.7z ver. 4.0.14</strong>, 19 MB - PHP 5.4, MySQL 5.1 - easy to add newer tools eg - see below.</p> </div> <div class="info"> <strong>LARAGON_ROOT is J:\awww above www dir </strong> (my local (home PC) web server first document root).<br><br>Current document root (may be more, <strong>see Menu -&gt; www -&gt; Switch document root</strong>) : <strong><br>$_SERVER['DOCUMENT_ROOT'] = <?= $_SERVER['DOCUMENT_ROOT']?> </strong> </div> </div> <div class="container"> <div class="content"> <html lang="hr"> <head> </head> <body> <p><a href=""></a> - download.&nbsp; See links at end of this script.</p> <p><strong>Can Install WordPress using Laragon's &quot;quick create&quot; feature</strong>. </p> <p>C:\WINDOWS\system32\drivers\etc\hosts&nbsp; should have line :<br> <strong> localhost dev1&nbsp; <br> </strong>or mysite instead dev1. This is needed for web server to know how to reach web site in URL :&nbsp; <strong>&nbsp;http://dev1...</strong></p> <p>&nbsp;</p> <h1>2. New versions of Laragon WAMP Server SW tools</h1> <h2><strong>2.1 Add another PHP version</strong> :</h2> <ol class="auto-style1"> <li><a href=""></a> or &quot;archives&quot; subfolder (ie <a href=""></a> ) eg <strong><br> 26 MB&nbsp; </strong>, 26 MB<br><br>where x64 means 64-bit,&nbsp; xx86 means 32-bit, <strong>nts means Non Thread Safe</strong> - it is <strong>more efficient</strong>, see below or : <br> <a href=""></a> .</li> <br> <br /> <li>Extract downloaded to: {LARAGON_ROOT}\bin\php\<strong>php-7.4.22-nts-Win32-vc15-x64<br> </strong>where <strong>my LARAGON_ROOT is J:\awww (</strong>above www my local web server doc. root).<strong><br></strong></li> <li>Select new version at: Laragon Menu &gt;PHP&gt; Version &gt; php-7.4.22-nts-Win32-vc15-x64</li> </ol> <p>If something's wrong, check and install correspond VC Redist (VC11, VC14, VC15...).</p> <p>&nbsp;</p> <h2>2.2 Add another Apache version</h2> <ol> <li><a href=""></a> <br>eg <strong> 10 MB</strong>&nbsp;, 10MB <br></li> <li>Extract downloaded to: {LARAGON_ROOT}\bin\apache\<br></li> <li>Changes in J:\awww\bin\apache\httpd-2.4.48-win64-VS16\conf\httpd.conf :<br> <br>Optional :&nbsp; Listen 8083 instead Listen 80<br><br>&lt;Directory /&gt;<br>&nbsp;&nbsp; # original : AllowOverride none<br>&nbsp;&nbsp; # original : Require all denied<br>&nbsp;&nbsp; Options Indexes FollowSymLinks<br>&nbsp;&nbsp; AllowOverride All<br>&nbsp;&nbsp; Require all granted<br>&lt;/Directory&gt;<br><br> &lt;Directory &quot;J:/ylaragon/www&quot;&gt;<br>&nbsp;&nbsp; ...<br>&nbsp;&nbsp;&nbsp; # AllowOverride None<br>&nbsp;&nbsp; AllowOverride All<br>&nbsp;&nbsp; ...<br> <br>&lt;Directory &quot;${SRVROOT}/cgi-bin&quot;&gt;<br>&nbsp;&nbsp; #AllowOverride None<br>&nbsp;&nbsp; #Options None<br>&nbsp;&nbsp; #Require all granted<br>&nbsp;&nbsp; Options Indexes FollowSymLinks<br>&nbsp;&nbsp; AllowOverride All<br>&nbsp;&nbsp; Require all granted<br>&lt;/Directory&gt;<br></li> <li>Optional : Enable SSL so : <strong>Laragon menu</strong> link at top of Laragon window (or right click on Laragon window) -&gt; Apache -&gt; SSL<br></li> <li>Select new version at: Laragon Menu &gt; Apache &gt; Version &gt;</li> </ol> <p>&nbsp;</p> <p>&nbsp;</p> <h2>2.3. Virtual host - no need for home development</h2> <p><strong>Why no need : See Menu -&gt; www -&gt; Switch document root - any dir on PC may contain PHP, HTML... scripts which can be executed - I added dir J:\ylaragon\www\ for testing,<br>J:\awww\www is my developing dir, my production site is demo site - free hosting with free Mysql :<br>On Linux : <a href=""></a> (freehostingeu - fast, stable, has free MySQL) .</strong></p> <ol> <li> <p>Menu -&gt; Preferences -&gt; General tab - you can change your projects directory and you can set domain for virtual host name eg: {project_name}.me. By the default host name is <code></code>.</p> </li> <li> <p>When you create<strong> new folder in Document Root</strong> folder of laragon, <strong>laragon automatically creates virtual host</strong>. if you want see the project with virtual host<br /> click <strong>&quot;Menu&quot; button -&gt; select www</strong>, now you can see your project with virtual hostname. <strong>click hostname </strong>to navigate in the browser.</p> </li> </ol> <p>&nbsp;</p> <p>&nbsp;</p> <h3>2.4 Add another Nginx version - NOT WORKING FOR ME (lot of &quot;Bad Gateway&quot; errors, then stopped)</h3> <p>Nginx port change : Menu -&gt; Nginx -&gt; Sites enabled -&gt; 00-default.conf</p> <ol> <li><a href=""></a> eg <strong>, 1.7 MB !!</strong></li> <li>Extract downloaded to: {LARAGON_ROOT}\bin\nginx\<strong>nginx-1.19.2</strong></li> <li>Select the new version at: Laragon Menu &gt; Nginx &gt; Version &gt; nginx-1.19.2</li> </ol> <h3>&nbsp;</h3> <h2>2.5 Add another MariaDB&nbsp; or MySQL version</h2> <ol> <li> <p><a href=""></a> MySQL-5.7/<br /> Extract the downloaded to: {LARAGON_ROOT}\bin\mysql\mysql-5.7.18-winx64 </p> <p>See below Note for MariaDB - <strong>I use it</strong> :<br /> <a href=""></a> eg <strong>, 70 MB</strong> </p> <p>Select new version at: Laragon Menu &gt; MySQL &gt; Version &gt; mysql-5.7.18-winx64 </p> <p>Note: If you use MariaDB, extract it to: {LARAGON_ROOT}\bin\mysql\<strong>mariadb-10.5.5-winx64</strong> Laragon will automatically create correspond DataDir for MariaDB on <strong>data/mariadb</strong></p> </li> </ol> <h3>&nbsp;</h3> <h2>2.6 Add phpMyAdmin; 6.3 MB</h2> <p><a href=""></a> and extract to {LARAGON_DIR}\etc\apps\phpMyAdmin.<br /> SHA256 hash matches<br /> cf1adc96dcdc46360a90f10df98fefb3bfd9e5a243b52645021dc590682cffb3</p> <p>Acess phpMyAdmin at: <a href="http://localhost:8083/phpmyadmin">http://localhost:8083/phpmyadmin</a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <h2>3. Install PHP's Oracle OCI8 extension (works with both Apache &amp; Nginx)</h2> <ol> <li> Download OCI8 extension to access Oracle DB <strong></strong> from <a href="" target="_blank"></a> . Use 'pecl install oci8' to install for PHP 7. I only unzip <strong>php_oci8_12c.dll</strong> <strong>147456 B</strong>, 2019.12.04 in : <code><br>J:\awww\bin\php\php-7.4.10-nts-Win32-vc15-x64\ext</code> on dev site, or in<br /> <code>J:\ylaragon\bin\php\php-7.4.10-nts-Win32-vc15-x64\ext</code> on test site.<br> </li> <li> &nbsp;Download Oracle Instant Client <strong></strong> file:<br /> <a href=""></a> Note: You must accept &quot;Accept License Agreement&quot; and &quot;create an account (Free)&quot; <br> </li> <li> <p>Extract downloaded zip files to <strong>PHP dir</strong> (Menu &gt; PHP &gt; Version &gt; dir:php-xxx-xxx)<br /> <code>J:\awww\bin\php\php-7.4.10-nts-Win32-vc15-x64</code></p> </li> <li> <p>Enable: click <code>Menu &gt; PHP &gt; Extensions &gt; php_oci8_12c.dll</code></p> </li> <li> <p>Restart Apache. You should see Oracle OCI information on phpinfo().</p> </li> </ol> <h3>&nbsp;</h3> <h3>Instant Client Installation for Microsoft Windows 64-bit - no need for PHP home development</h3> <p>See the <a href="">Instant Client Home Page</a> for more information about Instant Client packages. Client-server version interoperability is detailed in <a href="">Doc ID 207303.1</a>.</p> <p>For example, Oracle Call Interface 19, 18 and 12.2 can connect to Oracle Database 11.2 or later. Some tools may have other restrictions.</p> <ol> <li>Download the appropriate Instant Client packages for your platform - Basic or Basic Light</li> <li>Unzip packages dir. eg <code>C:\oracle\instantclient_19_3</code></li> <li><strong>Add this dir to PATH</strong> environment variable. If you have multiple versions of Oracle libraries installed, make sure the new directory occurs <strong>first in the path</strong>. Restart any terminal windows or otherwise make sure the new PATH is used by your applications.</li> <li>Download and install correct Visual Studio Redistributable from Microsoft. Instant Client 19 requires the <a href=""><strong>Visual Studio 2017 redistributable</strong></a>. Instant Client 18 and 12.2 require the <a href="">Visual Studio 2013 redistributable</a>. Instant Client 12.1 requires the <a href="">Visual Studio 2010 redistributable</a>.</li> <li> <p>If you intend to co-locate optional Oracle configuration files such as <strong>tnsnames.ora, sqlnet.ora, ldap.ora, or oraaccess.xml</strong> with Instant Client, then create a subdirectory such as<br /> <code>C:\oracle\instantclient_19_3\network\admin</code><br /> This is default Oracle client configuration dir for apps linked with this Instant Client. </p> <p>Alternatively, Oracle client configuration files can be put in another, accessible directory. Then set the environment variable TNS_ADMIN to that directory name.</p> </li> <li>Start your application.</li> </ol> <p>ODBC users should follow the <a href="">ODBC Installation Instructions</a>.</p> <p>2020.01.16 To get this working with latest Laragon &amp; PHP I had to download <strong>instant client version 12</strong> and <strong>place DLLs in Laragon root folder (alongside laragon.exe)</strong>. Placing them in php dir or Apache bin dir did not work.</p> <p>&nbsp;</p> <p>&nbsp;</p> <h2>4. <strong>CGI/FastCGI (FastCGI/PHP-FPM) or worse </strong>mod_php Apache module</h2> <p>To see which version your website is using, put a file containing &lt;?<strong>php phpinfo();</strong> ?&gt; on your site and look for the <strong>Server API entry</strong>. This could say something like <strong>CGI/FastCGI or Apache 2.0 Handler - nts (Non thread safe) version is faster and/or less buggy</strong>, or otherwise they would have just offered ts (thread safe) version and not bothered to give us choice!</p> <p>Preferred way to do the stack is eg <strong>FastCGI/PHP-FPM</strong>. That way you can use much faster MPM Worker. The whole PHP remains nts - non-threaded, but <strong>Apache serves threaded</strong> (like it should).</p> <p>If you also look at <strong>command-line version of PHP - thread safety does not matter</strong>. </p> <p>&nbsp;</p> <p>A ts (Thread Safe) version should be used if you want to install PHP as an Apache module where worker is the MPM. <strong>Apache MPM prefork with modphp (ts)</strong> is used because it is <strong>easy to configure/install</strong>. Performance-wise it is <strong>fairly inefficien,</strong>.so My Server API is most frequent <strong>CGI/FastCGI</strong>. </p> <p>For multithreaded webservers, such as <strong>IIS5 and IIS6, you should use threaded version of PHP</strong>. </p> <p>IMAP (Win/Unix) Library is not thread safe - not recommended for use in a multi-threaded environment. </p> <p>&nbsp;</p> <p>&nbsp;</p> <p>Apache HTTP web server supports multiple <strong>models for handling requests</strong>, one of which called <strong>worker MPM uses threads</strong>. But it supports another <strong>concurrency model called prefork MPM - uses processes</strong> - that is, web server will create/dedicate a single process for each request.</p> <p>There are multiple ways to <strong>chain the web server with PHP</strong>. For Apache HTTP Server, the most popular is <strong>&quot;mod_php&quot; module</strong> - actually PHP itself, but compiled as a module for web server, and so <strong>PHP gets loaded right inside web server</strong> . </p> <p>Since with mod_php, PHP gets loaded right into Apache, if Apache is going to handle concurrency using its <em>Worker MPM (that is, using Threads) then PHP must be able to operate within this same multi-threaded environment</em> - meaning, <strong>PHP has to be thread-safe</strong> to be able to play ball correctly with Apache! </p> <p>At this point, you should be thinking &quot;OK, so if I'm using a multi-threaded web server and I'm going to embed PHP right into it, then I must use the thread-safe version of PHP&quot;. And this would be correct thinking. However, as it happens, <strong>PHP's thread-safety is highly disputed (diskutabilan)</strong>. It's a use-if-you-really-really-know-what-you-are-doing ground. </p> <p>Advice would be to <strong>not use PHP in a multi-threaded environment</strong> if you have the choice! </p> <p>Speaking only of <strong>Unix-based environments</strong>, I'd say that fortunately, you only have to think of this if you are going to use PHP with Apache web server, in which case you are advised to go with the <strong>prefork MPM of Apache (which doesn't use threads, and therefore, PHP thread-safety doesn't matter)</strong> and all GNU/Linux distributions that I know of will take that decision for you when you are installing Apache + PHP through their package system, without even prompting you for a choice. </p> <p>If you are going to use other webservers such as <strong>nginx or lighttpd, you won't have the option to embed PHP into them anyway</strong>. You will be looking at using <strong>FastCGI or something equal</strong> which works in a different model where <strong>PHP is totally outside of the server with multiple PHP processes used for answering requests through e.g. FastCGI</strong>. For such cases, <strong>thread-safety also doesn't matter</strong>. </p> <p>&nbsp;</p> <h2>5. NO NEED : How to enable a manually created virtual host</h2> <p><strong>See Menu -&gt; www -&gt; Switch document root - any dir on PC may contain PHP, HTML... scripts which can be executed.</strong></p> <p>create a Virtual Host file without &quot;auto.&quot; prefix, Laragon will respect any changes in the file.</p> <p>Assume you have a project name: dev1 (or myproj) You can create a file name<br /> <strong>etc/apache2/sites-enabled/dev1.conf</strong> with content like this:</p> <pre><code>&lt;VirtualHost \*:8083&gt; DocumentRoot "J:/awww/www/" ServerName dev1 ServerAlias \* &lt;Directory "J:/awww/www/"&gt; AllowOverride All Require all granted &lt;/Directory&gt; &lt;/VirtualHost&gt;</code></pre> <p>Note: You need to put dev1 and entry to your hosts file. The quickest way is let Laragon auto-create Virtual Hosts for you (not convinient for B12phpfw ?), then you just remove the &quot;auto.&quot; prefix from the Virtual Host file.</p> <h3>&nbsp;</h3> <h2>&nbsp;I do not use this : apvh.bat to create AP(ache) V(irtual) H(ost) using command line in Laragon window</h2> <p><a href=""></a></p> <p>Change the SSL files directory on line 9 according to yours. i.e. set SSL_PATH=F:/laragon/etc/ssl/ -&gt; set SSL_PATH=Your/Laragon/installation/path/etc/ssl/</p> <p>Open the Terminal and cd into the directory where all your virtual hosts are stored. (for me: <strong>J:\ylaragon\etc\apache2\sites-enabled</strong>) </p> <p>apvh {sitename} {directory} {ssl} </p> <p>? Where:<br /> sitename: Sitename containing .domain name.<br /> directory: <strong>full absolute path</strong> to the site directory - must not contain trailing slahes (\ or /).<br /> ssl: Use ssl to have the virtual host for SSL else empty. </p> <p>?? Remember:<br /> This script assumes that you have <strong>added virtual host entry to<br /> C:\Windows\System32\drivers\etc\hosts</strong> file and in alt_names section in the openssl template file (for me: in J:\ylaragon\bin\laragon\tpl\openssl.conf.tpl, not in J:\ylaragon\usr\tpl\openssl.conf.tpl) </p> <p>?? Acronyms:<br /> apvh === Apache virtual host.<br /> India == Indians never delay in anything.</p> <pre>@echo off :: Author :: Manually create apache virtual hosts file for Laragon set SITE\_NAME=%1 set SITE\_PATH=%2 set WANT\_SSL=%3 set SSL\_PATH=F:/laragon/etc/ssl/ if &quot;%SITE\_PATH:~-1,1%&quot; neq &quot;/&quot; ( set SITE\_PATH=%SITE\_PATH:\\=/%/ ) if &quot;%WANT\_SSL%&quot; == &quot;&quot; ( echo. ( echo.^&lt;VirtualHost \*:80^&gt; echo. DocumentRoot &quot;%SITE\_PATH%&quot; echo. ServerName %SITE\_NAME% echo. ServerAlias \*.%SITE\_NAME% echo. ^&lt;Directory &quot;%SITE\_PATH%&quot;^&gt; echo. AllowOverride All echo. Require all granted echo. ^&lt;/Directory^&gt; echo.^&lt;/VirtualHost^&gt; ) ^&gt; %SITE\_NAME%.conf ) if &quot;%WANT\_SSL%&quot; == &quot;ssl&quot; ( echo. ( echo.define ROOT &quot;%SITE\_PATH%&quot; echo.define SITE &quot;%SITE\_NAME%&quot; echo. echo.^&lt;VirtualHost \*:80^&gt; echo. DocumentRoot &quot;${ROOT}&quot; echo. ServerName ${SITE} echo. ServerAlias \*.${SITE} echo. ^&lt;Directory &quot;${ROOT}&quot;^&gt; echo. AllowOverride All echo. Require all granted echo. ^&lt;/Directory^&gt; echo.^&lt;/VirtualHost^&gt; echo. echo.^&lt;VirtualHost \*:443^&gt; echo. DocumentRoot &quot;${ROOT}&quot; echo. ServerName ${SITE} echo. ServerAlias \*.${SITE} echo. ^&lt;Directory &quot;${ROOT}&quot;^&gt; echo. AllowOverride All echo. Require all granted echo. ^&lt;/Directory^&gt; echo. echo. SSLEngine on echo. SSLCertificateFile %SSL\_PATH%%SITE\_NAME%.crt echo. SSLCertificateKeyFile %SSL\_PATH%%SITE\_NAME%.key echo.^&lt;/VirtualHost^&gt; ) ^&gt; %SITE\_NAME%.conf ) echo.Your Apache virtual-host file %SITE\_NAME%.conf is created. pause start . nts and nsp&gt;</pre> <p>&nbsp;</p> <p>&nbsp;</p> <h1><strong>MS Expression web WYSIWYG HTML editor</strong></h1> <pre><code>&lt;body style="margin: 1em; padding: 30px 10% 50px 10%; font-size: 1.2em; font-family: Corbel, Arial, Helvetica, sans-serif ; "&gt;</code></pre> <p>&nbsp;</p> <hr /> <pre><code>C:\WINDOWS\system32&gt;path displays PATH= ...</code></pre> <p>&nbsp;</p> <p>&nbsp;</p> <h1>&nbsp;PHP's interactive console </h1> <p> <a href=""></a><br /> </p> <pre><code>php -a Interactive shell php &gt; $a = 'Hello world!'; php &gt; echo $a; Hello world! php &gt;</code></pre> <p>Interactive shell is not a <strong>REPL</strong> (Read-Eval-Print Loop) since it lacks the print - seen $a immediately after assigning it.</p> <p><a href=""></a> for Psysh see <a href=""></a></p> <p>&nbsp;<br /></p> <pre>&nbsp;</pre> <pre><code><strong>composer require psy/psysh:@stable</strong> on Windows J:\awww\www&gt;.\vendor\bin\psysh on Linux ./vendor/bin/psysh or : git clone cd psysh composer install ./bin/psysh or: wget chmod +x psysh ./psysh</code></pre> <p>&nbsp;</p> <p>&nbsp;</p> <p> <a title="Getting Started" href="">Getting Started</a></p> <p><a href=""></a></p> <p><a href=""></a> <strong>- Add newer PHP... XDebug, PostgreSQL, Python, ruby, Rails, Golang</strong></p> <p>Also <a href=""></a> - provide a productive and secure scripting environment for modern programmer. It is built on top of V8, Rust, and TypeScript.</p> <p><a href=""></a></p> <p><a href=""></a></p> <p><a href=""></a> - download or&nbsp;&nbsp; <a href=""></a> </p> <p>&nbsp;</p> <p> <a href=""></a></p> <p><a href=""></a></p> <p><a href=""></a></p> <p><a href=""></a></p> <p><a href=""></a></p> <p><a href=""></a></p> <p>[<a href=""></a>]<br /> (<a href=""></a>) </p> </div> </div> </div> <p>&nbsp;</p> </body> </html>