PHP: Unterschied zwischen den Versionen

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen
 
(20 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 18: Zeile 18:
  zypper install php5-soap
  zypper install php5-soap


== PHP Extension "interbase" bereitstellen ==
== Session Verzeichnis ==
 
  Verzeichnis namens "Sess" in C:\Programme\Apache Group\Apache\" oder im selben Verzeichnis wie "DocumentRoot" anlegen.
  In der Datei "php.ini" den Eintrag "session.save_path = " auf im ersten Falle


=== 64-bit ===
  session.save_path = C:/Programme/Apache Group/Apache/Sess
 
  abändern.


Bekomme ich bei mir nicht zum laufen. Nach der Compilierung eines Mini-Programmes zur Abprüfung der existenz von libfbclient kann das Programm die Bibliothek nicht laden: "not compatible version of" ...
== PHP7 ==


* Traurig: Nach so vielen Jahren 64-Bit läuft das immer noch nicht!
ich habe PHP7 RC6 folgendermasen zum Laufen gebracht.


=== 32-bit ===
* openSUSE 13.1 64 Bit installiert (als VM unter VirtualBox, Host ist openSUSE 42.1)
* incl. Commando-Zeilen Tools, C++ Entwicklung, Webserver
* Mich über PHP7 beim OpenSUSE Build Serivce Informiert
** https://build.opensuse.org/package/show/devel:languages:php:php7/php7
* im yast folgendes Repository hinzugefügt
** <code>http://download.opensuse.org/repositories/devel:/languages:/php:/php7/openSUSE_13.1</code>
* im yast php7 nun installiert
* phpinfo(); lieferte eigentlich direkt den Erfolg
* weitere Module installiert, mcrypt, soap, ...


=== php7-interbase ===


* Vorbereitung
die interbase Erweiterung war nicht dabei, also per Hand


<code>
* den interbase-classic Server installiert, ev. auch "-devel" Pakete nötig weis nicht mehr
zypper install libxml2-devel
* das Quelltext-Paket 'php-7.0.0RC7.tar.gz' von php.net geladen
zypper install FirebirdCS-2.5.0.26054-ReleaseCandidate3.i686.rpm
* irgendwie den php das firebird in /opt/firebird installiert ist. Die Header-Dateien werden dort im ./include Verzeichnis gesucht.
</code>
* Diese waren aber bei mir im /urs/include/firebird, ok also einen Link erstellt:
** md /opt/firebird
** ln -s /usr/include/firebird /opt/firebird/include
* Nun ins ./ext/interbase Verzeichnis wechseln und dort
** phpize
** ./configure
** make
** make install


die interbase.so steht jetzt zur VErfügung, wird aber noch nicht geladen


* Ermittle die PHP Versionsnummer, damit du weist welchen Source-Tar-Ball du ziehen must
* joe /etc/php7/conf.d/interbase.ini


<code>
extension=interbase.so
  php -v
   
</code>
[Interbase]
 
ibase.dateformat=%m.%d.%Y
* Lade vom Museum die Source-Code Distribution des PHP, in diesem Beispiel hat die Versionsprüfung 5.1.0 ergeben
ibase.timestampformat=%m.%d.%Y %H:%M:%S


<code>
* Jetzt muss apache2 noch merken das ein neues Modul gewünscht ist
wget http://museum.php.net/php4/php-5.1.0.tar.gz
** systemctl restart apache2
gzip -d php-5.1.0.tar.gz
tar -xf php-5.1.0.tar
cd php-5.1.0
</code>


* Compiliere Dir selbst die Extension "interbase.so", ermittle zuvor den Installationspfad von firebirdsql, ab 2.5 heisst er z.B. nicht mehr "/opt/firebird" wie hier angegeben
=== php7-memcached ===


<code>
* wget https://github.com/php-memcached-dev/php-memcached/archive/php7.zip
./configure --with-interbase=shared,/opt/firebird
* ... in ein neues Verzeichnis auspacken ...
make
* phpize
</code>
* ./configure
 
* make
* so, jetzt das Compilat noch PHP zur Verfügung stellen
* make install
* joe /etc/php7/conf.d/memcached.ini


<code>
  extension=memcached.so
cp modules/interbase.so /usr/lib/php5/extensions
</code>
 
* Nun reicht es, im Verzeichnis <code>/etc/php5/conf.d</code> die Datei <code>interbase.ini</code> anzulegen:
<code>
  extension=interbase.so
[Interbase]
ibase.timestampformat=%m-%d-%Y %H:%M:%S
</code>


den Apache 2 neu starten


rcapache2 restart
* Jetzt muss apache2 noch merken das ein neues Modul gewünscht ist
** systemctl restart apache2


Diagnose, ob jetzt das interbase Module geladen ist:
=== php7-xdebug ===


php -modules
* xdebug habe ich direkt von der xdebug Homepage geladen, da es in PHP 7.0.1 nicht mit dabei war
* ich habe es ins ./ext Verzeichnis eines kompletten php-7.0.1.tar.gz entpackt als wäre es eine mitgelieferte Extension
* phpize, ./configure, make, make install hat auch funktioniert
* Im /etc/php7/conf.d habe ich xdebug.ini angelegt. Es hat nicht so den Standard-Inhalt da es eine "Zend" Extension ist!


auf Fehler in der folgenden Datei achten:
zend_extension=xdebug.so
[xdebug]
xdebug.remote_enable=On
xdebug.remote_host=khao
xdebug.idekey=netbeans-xdebug


/var/log/apache2/error_log


=== Win32 ===
* Meine IDE läuft auf dem Rechner KHAO (Windows) und mein 13.1er hat den Hostname Virt42


Damit PHP auf Interbase/Firebird Datenbanken zugreifen kann, müssen die Routinen, die das ermöglichen, beim
=== Status vom 23.11.2015 ===
Start von PHP als Erweiterung geladen werden. Dies geschieht mit Hilfe zweier Einträge in der "php.ini".
Erstens muss der Eintrag "extension_dir= " auf das Verzeichnis mit den Extension-Dlls gesetzt werden. Diese
befinden sich standardmäßig im Verzeichnis "extensions". Falls PHP zum Beispiel in "C:\Programme\Php" installiert
wurde, liegen die Erweiterungs-Dlls im Verzeichnis "C:\Programme\Php\extensions".
Der Eintrag in der "php.ini" lautet dann:
  <u>Win32</u>
  extension_dir = "C:\Programme\Php\ext"
  <u>Linux</u>
  extension_dir = "/usr/lib/php/extension"


Zweitens gibt es in der "php.ini" einen Abschnitt, der sich "Dynamic Extensions" nennt. Dort sind alle Erweiterungen in der Form ";extension=php_....dll" aufgeführt. Da ein Semikolon am Anfang steht, beachtet PHP diese Zeile nicht als Eintrag sondern als Kommentar. In der Zeile ";extension=php_interbase.dll" muss dieses Semikolon nun entfernt werden.
* Shop läuft bei mäsiger Performance
* Riessen Bug in ibase.php gefunden, es wurden zig Interbase Connections pro Seitenaufruf neu geöffnet
* Der Player sollte in das Header-Template des WebShops dort wäre er passender
* Die Static-Klassen sollten durchgängig programmiert werden


  <u>Win32</u>
=== Status vom 25.11.2015 ===
  extension=php_interbase.dll
  extension=php_gd2.dll
  <u>Linux</u>
  extension=interbase.so


Der WebShop erfordert, dass Timestamps im richtigen Format übernommen werden. Dies geschieht durch folgende zwei Zeilen, die am besten ans Ende der "php.ini" gestellt werden:
* Modul "memcached" lässt sich nun compilieren
 
  [Interbase]
  ibase.timestampformat=%m-%d-%Y %H:%M:%S


Jetzt sollten die PHP-Routinen für die Interbase-Anbindung zur Verfügung stehen. Falls dies nicht so ist, liegt es vielleicht daran, das die "php.ini" im falschen Verzeichnis liegt  (siehe Ende vorletztes Kapitel) oder der Pfad im Eintrag "extension_dir=" falsch gesetzt ist.
=== Status vom 03.12.2015 ===


<u>Achtung</u>: Nach einer Änderung muss der Apache-Webserver mit "Startmenü\Alle Programme\Apache HTTP Server\Control Apache Server\Restart" neu gestartet werden.
* keine offenen Punkte mehr
* Optimierungen an der CodeBasis vorgenommen


== Session Verzeichnis ==
=== Status vom 07.12.2015 ===
 
  Verzeichnis namens "Sess" in C:\Programme\Apache Group\Apache\" oder im selben Verzeichnis wie "DocumentRoot" anlegen.
  In der Datei "php.ini" den Eintrag "session.save_path = " auf im ersten Falle


  session.save_path = C:/Programme/Apache Group/Apache/Sess
* PHP 7.0.0 installiert
 
  abändern.

Aktuelle Version vom 5. Januar 2016, 15:09 Uhr

PHP ist eine Scriptsprache und läuft auf dem gleichen Host wie der Apache Webserver ab. PHP ist eine Entwicklung der PHP Open Source Bewegung (http://php.net/). Sie wird vor allem im InterNet eingesetzt sobald statischer HTML-Inhalt nicht mehr ausreicht, und Ablauflogik benötigt wird. Dabei bittet der Apache das PHP Modul das entsprechende PHP Script (=Textdatei) mit den übertragenen Parametern auszuführen. Das Ergebnis des PHP Moduls wird an den Client rückübertragen.

PHP IDE

Zur Ansicht der PHP - Scripte (=Text Dateien) eignet sich DevPHP der Open Source Bewegung:

http://sourceforge.net/projects/devphp

devPHP wird sichlich in Kürze die PHP für Eclipse abgelöst werden (Stand 2006).

PHP auf dem OrgaMon Server

Der TWebShop des OrgaMons läuft auf dem OrgaMon - Server. Er ist in PHP 5.x implementiert. Auch die Internet-Ablagen verwenden ein PHP Script, um die abgelegten ZIP-Dateien aufzulisten. Dazu muss auf dem Server Apache2 und PHP5 installiert sein.

zusätzliche PHP-Extensions

zypper install php5-mcrypt
zypper install php5-soap

Session Verzeichnis

  Verzeichnis namens "Sess" in C:\Programme\Apache Group\Apache\" oder im selben Verzeichnis wie "DocumentRoot" anlegen.
  In der Datei "php.ini" den Eintrag "session.save_path = " auf im ersten Falle
  session.save_path = C:/Programme/Apache Group/Apache/Sess
  
  abändern.

PHP7

ich habe PHP7 RC6 folgendermasen zum Laufen gebracht.

php7-interbase

die interbase Erweiterung war nicht dabei, also per Hand

  • den interbase-classic Server installiert, ev. auch "-devel" Pakete nötig weis nicht mehr
  • das Quelltext-Paket 'php-7.0.0RC7.tar.gz' von php.net geladen
  • irgendwie den php das firebird in /opt/firebird installiert ist. Die Header-Dateien werden dort im ./include Verzeichnis gesucht.
  • Diese waren aber bei mir im /urs/include/firebird, ok also einen Link erstellt:
    • md /opt/firebird
    • ln -s /usr/include/firebird /opt/firebird/include
  • Nun ins ./ext/interbase Verzeichnis wechseln und dort
    • phpize
    • ./configure
    • make
    • make install

die interbase.so steht jetzt zur VErfügung, wird aber noch nicht geladen

  • joe /etc/php7/conf.d/interbase.ini
extension=interbase.so

[Interbase]
ibase.dateformat=%m.%d.%Y
ibase.timestampformat=%m.%d.%Y %H:%M:%S
  • Jetzt muss apache2 noch merken das ein neues Modul gewünscht ist
    • systemctl restart apache2

php7-memcached

extension=memcached.so


  • Jetzt muss apache2 noch merken das ein neues Modul gewünscht ist
    • systemctl restart apache2

php7-xdebug

  • xdebug habe ich direkt von der xdebug Homepage geladen, da es in PHP 7.0.1 nicht mit dabei war
  • ich habe es ins ./ext Verzeichnis eines kompletten php-7.0.1.tar.gz entpackt als wäre es eine mitgelieferte Extension
  • phpize, ./configure, make, make install hat auch funktioniert
  • Im /etc/php7/conf.d habe ich xdebug.ini angelegt. Es hat nicht so den Standard-Inhalt da es eine "Zend" Extension ist!
zend_extension=xdebug.so

[xdebug]
xdebug.remote_enable=On
xdebug.remote_host=khao
xdebug.idekey=netbeans-xdebug


  • Meine IDE läuft auf dem Rechner KHAO (Windows) und mein 13.1er hat den Hostname Virt42

Status vom 23.11.2015

  • Shop läuft bei mäsiger Performance
  • Riessen Bug in ibase.php gefunden, es wurden zig Interbase Connections pro Seitenaufruf neu geöffnet
  • Der Player sollte in das Header-Template des WebShops dort wäre er passender
  • Die Static-Klassen sollten durchgängig programmiert werden

Status vom 25.11.2015

  • Modul "memcached" lässt sich nun compilieren

Status vom 03.12.2015

  • keine offenen Punkte mehr
  • Optimierungen an der CodeBasis vorgenommen

Status vom 07.12.2015

  • PHP 7.0.0 installiert