Möglichkeit 3 - Teil 1:
Man beläßt die default Einstellungen der Xampp Version (Zur Zeit aktuell mit PHP 7.2.1 als Modul).
Weitere PHP Versionen werden über "mod_fcgid.so" (FastCGI) via vhost Einträge gesteuert. Alle Angaben ohne Gewähr.
Voraussetzungen:
Im folgenden nutze ich die gleichen Pfadangaben/Verzeichnisstruktur wie zu Beginn dieses threads - Diese sind auf die eigenen Bedürfnisse anzupassen:
Code:
+ xampp721
+ __SITES__
+ MyWebSite1
+ htdocs
+ web
+ MyWebSite2
+ htdocs
+ web
Weitere PHP Version hinzufügen:
Die folgenden Angaben dann für jede weitere PHP Version durchführen.
Wir starten die Xampp-Shell (xampp_shell.bat) und checken die Apache Version im Verzeichnis "\apache\bin"
Code:
httpd -v
Meine Ausgabe z.B.:
Server version: Apache/2.4.29 (Win32)
Apache Lounge VC15 Server built: Nov 3 2017 10:30:36
Wir laden uns die gewünschte PHP Version von http://windows.php.net/download/
Hier nehmen wir die PHP Version 7.1.14 und wählen das Win32(x86) NTS (Non Thread Safe) Release: php-7.1.14-nts-Win32-VC14-x86.zip
Extrahieren nach "C:\xampp721\php7114"
In diesem Ordner die "php.ini-development" nach "php.ini" kopieren\umbenennen
In dieser "php.ini" folgende Einstellungen prüfen/setzen:
Code:
date.timezone = Europe/Berlin
extension_dir = "\xampp721\php7114\ext"
error_log="\xampp721\php7114\logs\php_error_log"
Das Verzeichnis\Datei "\xampp721\php7114\logs\php_error_log" evtl. neu anlegen.
Weitere Erweiterungen dann wie benötigt\gewünscht auskommentieren oder sich vereinzelt an der xampp "\php\php.ini" orientieren z.B.:
Code:
extension=php_bz2.dll
extension=php_curl.dll
extension=php_fileinfo.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_intl.dll
extension=php_mbstring.dll
extension=php_exif.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_pdo_sqlite.dll
extension=php_soap.dll
PHP auf der Kommandozeile via Xampp-Shell (xampp_shell.bat):
Xampp setzt in der "xampp_shell.bat" verschiedene Angaben die zur Laufzeit der Xampp-Shell zur Verfügung stehen.
Hier wird u.a. über den Eintrag "SET "PHPRC=%~dp0php" der Pfad auf die php.ini fest vorgegeben (auf /php).
Diesen kommentieren wir daher aus:
Code:
REM SET "PHPRC=%~dp0php"
Anderenfalls müßten wir immer den Pfad auf die korrekte php.ini mitschleppen - z.B.:
C:\xampp721\php7114\php.exe -c C:\xampp721\php7114\php.ini -v
Weiterhin ergänzen wir unser Verzeichnis "\php7114" wie folgt:
Code:
Von
SET "Path=%~dp0;%~dp0php;%~dp0perl\site\bin;%~dp0perl\bin;%~dp0apache\bin;%~dp0mysql\bin;%~dp0FileZillaFTP;%~dp0MercuryMail;%~dp0sendmail;%~dp0webalizer;%~dp0tomcat\bin;%Path%"
nach
SET "Path=%~dp0;%~dp0php;%~dp0php7114;%~dp0perl\site\bin;%~dp0perl\bin;%~dp0apache\bin;%~dp0mysql\bin;%~dp0FileZillaFTP;%~dp0MercuryMail;%~dp0sendmail;%~dp0webalizer;%~dp0tomcat\bin;%Path%"
Im Verzeichnis "\php7114" eine "php71cli.bat" anlegen:
Code:
@ECHO OFF
REM %~dp0php -c "%~dp0php.ini" %*
%~dp0php %*
Sie müssen nun die Xampp-Shell neu starten: Mit folgenden Test sollten die Pfade zur jeweiligen php.ini stimmen - Meine Ergebnisse:
Code:
# php -v
PHP 7.2.1 (cli) (built: Jan 4 2018 04:29:12) ( ZTS MSVC15 (Visual C++ 2017) x86 )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies
# php --ini
Configuration File (php.ini) Path: C:\Windows
Loaded Configuration File: C:\xampp721\php\php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
# php71cli -v
PHP 7.1.14 (cli) (built: Jan 31 2018 00:24:47) ( NTS MSVC14 (Visual C++ 2015) x86 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
# php71cli --ini
Configuration File (php.ini) Path: C:\Windows
Loaded Configuration File: C:\xampp721\php7114\php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
Wenn Sie beispielsweise die intl Erweiterung in der php.ini der PHP 7.1.14 gesetzt haben - sollten Sie folgende Anzeige erhalten:
Code:
# php71cli -i | findstr "intl"
intl
intl.default_locale => no value => no value
intl.error_level => 0 => 0
intl.use_exceptions => 0 => 0
Darüberhinaus sollten alle bisherigen Xampp Seiten (localhost, xampp dashboard, phpmyadmin) beim Start Apache/MySQL über das "Xampp Control Panel"
wie gewohnt laufen (via PHP 7.2.1 als Modul - s. phpinfo()) ...