Installation Typo3 unter AMPPS

Montag, 03. Oktober 2016

Spickzettel für verschiedene Problem, die bei der Installation von Typo3 6.2 unter AMPPS (Mac OSX El Capitan) mit PHP 5.6 entstanden sind. Als SMTP-Server diente ein externer Server bei HostEurope, der als SMTP-Zieladresse für die lokale postfix Konfiguration angegeben wurde.


TER Typo3 Repository: Update nicht möglich

Beim Versuch, über den Extension Manager die Liste der Typo3 Extensions aus dem TER (Typo3 Extension Repository) zu aktualisieren erscheint die Fehlermeldung “Aktualisieren der Erweiterungsliste: Could not access remote resource https://repositories.typo3.org/mirrors.xml.gz”.
Grund dafür war hier leider nicht eine einfache und in vielen Foren beschriebene Fehlkonfiguration von PHP (z.B. fehlendes PHP curl-Modul, allow_url_open = 0/Off oder allow_url_include = Off), sondern eine Änderung des Sicherheitsstandards bei OpenSSL und cURL.

Lösung:
1. Per Terminal mit HomeBrew OpenSSL installieren

brew install openssl

2. In der php.ini diese Zeile am Ende einfügen (Pfad evtl. anpassen)

openssl.cafile=/usr/local/etc/openssl/cert.pem

3. In der php.ini darauf achten, dass diese Zeilen nicht auskommentiert sind und existieren:

extension=curl.so
extension=openssl.so

4. Die cacert.pem von https://curl.haxx.se/docs/caextract.html downloaden und in ein Verzeichnis spielen, dass von PHP erreicht werden kann. Im Beispiel habe ich es unter /Applications/AMPPS/php-5.6/etc/ abgelegt. Dann am Ende der php.ini diese Zeile einfügen:

curl.cainfo = /Applications/AMPPS/php-5.6/etc/cacert.pem

5. Apache neu starten (direkt über das AMPPS Interface)


Scheduler/Crobjob unter AMPPS einrichten

Um den Scheduler (Planer) unter AMPPS zum Laufen zu bekommen, nutzt man am einfachsten das kostenlose Tool Cronnix. Dort muss zur Ausführung der richtige Pfad angegeben werden – sowohl zur PHP als auch dem Scheduler-Skript, z.B.

/Applications/AMPPS/php/bin/php /Pfad/Zum/Projekt/typo3/cli_dispatch.phpsh scheduler

Mailversand über PHP mail() funktioniert nicht

Typo3 versendet keine Mails. Dazu gibt es zwei mögliche Lösungsansätze.
Falls es nur um Formhandler geht, diesen Beitrag lesen.
Einfacher Test, um zu prüfen, ob der mail()-Befehl funktioniert:

<?php
	$empfaenger = 'deine@email.de';
	$betreff = 'Wichtige Nachricht an Dich!';
	$nachricht = "Diese Mail sollte versendet werden.";
	$header = 'From: Dein Name<'.$empfaenger.'>' . "\r\n" .
		'Reply-To: ' . $empfaenger . "\r\n" .
		'X-Mailer: PHP/' . phpversion();
 
	$status = mail($empfaenger, $betreff, $nachricht, $header, "-f".$empfaenger);
	echo $status ? "Mail versendet." : "Mail konnte nicht gesendet werden.";
?>

Erste Lösung: SMTP für Versand nutzen

In der LocalConfiguration.php den Abschnitt “MAIL” mit einem externen SMTP-Server bestücken:

'MAIL' => [
     'transport' => 'smtp',
     'transport_smtp_password' => 'xxxxxxxxxxxx',
     'transport_smtp_server' => 'mail.xxxxxxxxxx.de:25',
     'transport_smtp_username' => 'wp-xxxxxxxxxx',
 ],

Zweite Lösung: postfix für den Versand konfigurieren

Diese Lösung behebt das Problem an der Wurzel und konfiguriert den bei Mac vorinstallierten postfix/sendmail zum Versand der Mails über einen externen SMTP-Dienst. In diesem Beispiel nutzen wir einen Mailserver bei HostEurope (Webpack, Virtual Server etc.). Die Zugangsdaten entsprechen den identischen Daten, die auch im Programm Mac “Mail” eingegeben werden.

1. Die Datei /etc/postfix/master.cf bearbeiten und folgenden Zeilen am Ende ergänzen.
Unter relayhost den HostEurope MailServer eintragen.

relayhost=mail.deineDomain.de:25
smtp_sasl_auth_enable=yes
smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd
smtp_use_tls=yes
smtp_tls_security_level=encrypt
smtp_sasl_security_options =

2. In dem Verzeichnis /etc/postfix/ eine Datei sasl_passwd anlegen und folgenden Inhalt einfügen.
deineDomain, wpXXXXXX-user und passwort durch Deine Mail-Zugangsdaten beim Host ersetzen.

mail.deineDomain.de	wpXXXXXXX-user:passwort

3. Im Terminal nacheinander folgende Kommandos ausführen:

sudo postmap /etc/postfix/sasl_passwd
sudo postfix stop && sudo postfix start
echo "Dies ist eine Testmail" | mailx -s "Test" deine@adresse.de

Danach sollte eine Mail versendet werden. Falls nicht, lässt sich der Status des lokalen Mail-Queues mit folgender Eingabe prüfen:

mailq

Um den Mail-Versand in einer Textdatei zu loggen, richte ich gerne noch ein Logfile ein. Diese Anpassungen kommt in die php.ini von AMPPS. Der Benutzername “99grad” muss natürlich angepasst werden:

mail.log = /Users/99grad/Desktop/mail.log