PHP5 mittels Source Code auf einem frischen Ubuntu installieren

Das “hineinkompilieren” eines Advantage Database-Moduls machte es für mich erforderlich, die aktuelle PHP-Version auf einem frisch installierten Ubuntu (14.04) zu installieren.

Angelehnt an diese Anleitung entstand für mich der folgende Workarround:

Nach der Installation sind zuerst die Voraussetzungen für die Verwendung von PHP notwendig:

sudo apt-get install git build-essential autoconf apache2-prefork-dev

Anschließend installierte ich den Apache und zugehörige DEV-Module:

sudo apt-get install apache2 apache2-dev

Für das erfolgreiche Absolvieren benötigte ich noch die folgenden “Zusatzmodule”:

sudo apt-get php5-cli php5-mysql php5-gd php5-mcrypt php5-curl libapache2-mod-php5 php5-xmlrpc mysql-client libapache2-mod-fastcgi libxslt1.1 libxslt1-dev

 

sudo apt-get install php5-dev libbz2-dev libmysqlclient-dev libxpm-dev libmcrypt-dev libcurl4-gnutls-dev libxml2-dev libjpeg-dev libpng12-dev libfreetype6-dev libicu-dev

Wenn noch MySQL gewünscht ist, lässt sich dieses noch einfach ergänzen

sudo apt-get install mysql-server

Jetzt könnt ihr testen, ob der Apache richtig installiert wurde, indem ihr die IP-Adresse der Ubuntu-Servers im Browser aufruft:

Ubuntu Apache2 Install Confirmation SiteJetzt ist es an der Zeit den PHP Quelltext herunterzuladen:

git clone https://github.com/php/php-src.git

Checkt die von Euch gewünschte Version aus:

git checkout PHP-5.6.26

oder

git checkout PHP-5.6

Um aus dem PHP-Source nachher das makefile mit .configure zu erzeugen, benötigt ihr noch Bison, sonst bringt er folgende Fehlermeldung:

configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
configure: error: bison is required to build PHP/Zend when building a GIT checkout!

Diese Meldung umgeht ihr, indem ihr Euch bison von http://launchpadlibrarian.net herunterladet und installiert:

wget http://launchpadlibrarian.net/140087283/libbison-dev_2.7.1.dfsg-1_amd64.deb
wget http://launchpadlibrarian.net/140087282/bison_2.7.1.dfsg-1_amd64.deb
sudo dpkg -i libbison-dev_2.7.1.dfsg-1_amd64.deb
sudo dpkg -i bison_2.7.1.dfsg-1_amd64.deb

geht in den PHP-Source-Path – bei mir:./bu

cd ~/php-source

Jetzt muss das .configure-Skript erstellt werden mit

./buildconf

Als nächstes wird mit /.configure eingestellt, welche Module wir in PHP haben möchten. Ich empfehle diesen Mix aus üblichen PHP-Modulen:

./configure –with-apxs2=/usr/bin/apxs2 –with-mysql  –enable-mbstring   –with-curl   –with-openssl   –with-xmlrpc   –enable-soap   –enable-zip   –with-gd   –with-jpeg-dir   –with-png-dir   –with-mysql   –with-pgsql   –enable-embedded-mysqli   –with-freetype-dirphp    –enable-intl   –with-xsl –enable-mbstring   –with-curl   –with-openssl   –with-xmlrpc   –enable-soap   –enable-zip   –with-gd   –with-jpeg-dir   –with-png-dir   –with-mysql   –with-pgsql   –enable-embedded-mysqli   –with-freetype-dir     –enable-intl   –with-xsl –prefix=/usr/local/php

Mit den folgenden Befehlen erstellt ihr das Setup und installiert anschließend PHP auf dem Server

sudo make

sudo make install

libtool –finish /home/gustini/php-src/libs

Jetzt kopiert ihr eine der PHP-INIs (develpment oder production) an den Zielordner:

sudo cp php.ini-development /usr/local/lib/php.ini

Um PHP im Apache einzubinden, müsst ihr die Apache2.conf um folgende Zeilen ergänzen:

sudo vim /etc/apache2/apache2.conf

LoadModule php5_module /usr/local/php/lib/libphp5.so
AddType application/x-httpd-php .php

Damit PHP auch funktioniert, muss Apache2 vom ThreadSafe-Mode in den NotThreadSafeMode umgeschaltet werden:

sudo a2dismod mpm_event

sudo a2enmod mpm_prefork

cd

Jetzt müsst ihr noch den Apache2 neu starten:

sudo /etc/init.d/apache2 stop

sudo /etc/init.d/apache2 start

Anschließend sollte Apache und PHP5 erfolgreich installiert sein.

Ergänzende Hinweise:

Hinzufügen von PHP zum Pfad

sudo vim ~/.bashrc

Am Ende der Datei hinzufügen:

export PATH=$PATH:/usr/local/php/bin

Build PHP5 unter Ubuntu – Fehler: bison is required to build PHP/Zend when building a GIT checkout!

Fehlermeldung beim Kompilieren von PHP5-Source unter Ubuntu:

configure: error: bison is required to build PHP/Zend when building a GIT checkout

PHP5 benötigt für die Kompilierung bison 2.7. Dies lässt sich einfach nachinstallieren – anschließend läuft das “buildConfig” problemlos durch.

sudo apt-get install m4
wget http://launchpadlibrarian.net/140087283/libbison-dev_2.7.1.dfsg-1_amd64.deb
wget http://launchpadlibrarian.net/140087282/bison_2.7.1.dfsg-1_amd64.deb
sudo dpkg -i libbison-dev_2.7.1.dfsg-1_amd64.deb
sudo dpkg -i bison_2.7.1.dfsg-1_amd64.deb

Fehlermeldung unter Windows
Die Fehlermeldung kann auch beim Kompilieren von PHP unter Windows auftreten.

Wenn nach dieser Anleitung kompiliert wird, erscheint sie möglicherweise automatisch.
Beheben lässt sich die Fehlermeldung, indem die PHP-Binary-Tools, welche für die Kompilierung benötigt werden, in den Pfad der Umgebungsvariablen aufgenommen werden.

Ein kurzer Weg:

  • Windows-Taste + Pause
  • Erweitere Systemeinstellungen
  • Umgebungsvariablen
  • Ergänzen der Umgebungsvariable “PATH” um den Eintrag des bin-Verzeichnisses der PHP-Binary-Tools, nach der oben verlinkten Anleitung wäre das “c:\php-sdk\bin\”.

 

DHL Track & Trace API implementieren

Viele Agenturen und Versandhändler stehen irgendwann vor der Herausforderung, dass sie auf elektronischen Weg auf ihre Versanddaten zugreifen und diese auswerten wollen.

Die Informationen im Web  sind großteils sehr widersprüchlich und nicht konkret. Aus diesem Grund liste ich hier die aktuellen Informationen zur Informationsbeschaffung der DHL -API auf

Geschäftskundenversand API

Versandscheine für den nationalen und internationalen Versand erstellen, Exportdokumente vorbereiten und Abholungen beauftragen mit der Geschäftskundenversand API.

Privatkundenversand API

Ein DHL Produkt oder Service online auwählen, den zugehörigen Versandschein direkt vorbereiten, kaufen und anschließend selber drucken.

Standortsuche API

Mit der DHL Standortsuche API schnell und einfach die nächstgelegenen Packstationen, Paketboxen, Postfilialen und Postfiliale Direkt Filialen finden.

Sendungsverfolgung API

Mit der Sendungsverfolgung API verfolgen Privat- und Geschäftskunden jederzeit bequem online den aktuellen Auslieferungszustand von Sendungen.

Marktplatz API

Präsentieren Sie ihre Produkte und verwalten Sie die Bestellabwicklung in einem professionellen Verkaufsumfeld mit der Marktplatz API.

 

Zu allen APIs gibt es Code Beispiele und dokumentierte API-Details.

Alle näheren Informationen findet ihr unter

https://entwickler.dhl.de

Verbinden einer ADS-Datenbank per ODBC vom Webserver

Zur Zeit programmiere ich einen Zugriff auf unseren ADS-Datenbankserver, um damit Abfragen zu schreiben und zu exportieren.

Über den Aufruf meiner Skripte per DOS-Konsole hat das bisher ohne Probleme geklappt. Ich bediene mich der PHP-PEAR-Klassen:

require_once (‘DB.php’);
error_reporting(E_ALL);
$dsn = ‘odbc:///f991’; // DSN-Name

$dbODBC = DB :: connect($dsn); // CONNECT herstellen

if (true == DB :: isError($dbODBC))
{
die($dbODBC->getMessage());
}
else
{
echo “Connect erfolgreich”;
}

Als Output erhalte ich: “DB Error: connect failed

Wenn ich es allerdings vom DOS-Fenster aus starte, geht es ohne Probleme und die Verbindung wird hergestellt:
v:\XAMPP\php\php.exe” “index.php”

Erst dachte ich, es liegt vielleicht daran, dass XAMPP als Dienst läuft und ODBC nicht auf Benutzer-DSNs zugreifen kann und habe es als System-DSN angelegt.

Ergebnis: Das Gleiche, von DOS gehts, aber von einem Webserver nicht.

Daraufhin habe ich mal das ODBC-Objekt wie folgt näher ausgegeben

PHP-Code:
print_r($dbODBC);

und das hat das folgende Ergebnis gebracht:

Auschnitt aus Output:

Zitat:
[nativecode=HY000 [iAnywhere Solutions][Advantage SQL][ASA] Error 5185: Local server connections are restricted in this environment. See the 5185 error code documentation for details. axServerConnect]

Dadurch bin ich auf den folgenden Link gestoßen:
Advantage Database Architect über Remote Desktop � Das nie endende Chaos!
Ich bin so frei und zitiere daraus:

Zitat:
Wenn der Advantage Database Architect beim Öffnen einer Tabelle die Fehlermeldung “Error 5185: Local server connections are restricted in this environment. See the 5185 error code documentation for details. axServerConnect.” bringt, dann muss nur eine Datei ADS.INI im Verzeichnis der Tabelle mit diesem Inhalt angelegt werden:
[SETTINGS]
MTIER_LOCAL_CONNECTIONS=1

Allerdings hat diese Änderung bei mir leider nicht zum erwünschten Ergebnis geführt. Wenn jemand von Euch noch eine Idee hat, ich werde auch weitersuchen und die Lösung, so ich sie finde, hier veröffentlichen.

Ein bisschen googlen brachte mich dann darauf, dass ich möglicherweise ein Lizenzproblem habe:

Zitat:
IMPORTANT
Pursuant to iAnyWhere’s licensing agreement, … if an application is distributed to work without the Advantage Database Server (i.e., it uses the Advantage Local Server to access data), the application must act as a “client” that directly accesses and uses the data. To be specific, only computers that have the Advantage Local Server DLL loaded into memory can have access to the data that is obtained by that Advantage Local Server DLL. The application cannot act as “middleware” or as a “server” by having the data forwarded by any means to a separate computer. In other words, it is illegal to use the Advantage Local Server with a Web server, an application server, a terminal server, or any other type of middleware or server product to access data on behalf of remote computers. An Advantage Database Server (a.k.a. remote server) product must be purchased and used to allow this SOFTWARE PRODUCT to access data on behalf of applications running on remote computers.

Der ADS-Server verhindert aus lizenzrechtlichen Gründen den Zugriff von Webservern auf die Datenbank. Aus diesem Grund funktioniert das PHP-Modul nicht. Wie man es dafür aber zum Laufen bekommt, ist mir unbekannt. Gelöst habe ich das Problem nicht, aber umgangen habe ich es, indem ich ein Modul programmiert habe, welches die ADS-Datenbanktabellen in MySQL überträgt.

Eine weitere PHP-Library führt über ODBC die Anfragen aus und speichert die Ergebnisse serialisiert in der Datenbank ab, so dass der Webserver auf diese zugreifen kann.