Kategorie: Apache

OTRS 5: Fatal Error Kernel/ Modules/ AgentTicketZoomTicketID

Recently we switched from http to https for our ticket system OTRS5. After doing so, clicking on the links OTRS sent via email in (customer) notifications, resulted in the error:

Module Kernel/Modules/AgentTicketZoomTicketIDxx.pm not in @INC (/opt/otrs/Custom /opt/otrs/Kernel/cpan-lib /opt/otrs/ /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl

After some digging, we traced the problem back to Apaches RewriteEngine which replaced the „;“ chars with „%3b“ when someone used a http link (which OTRS sent via email).

The solution was simple: Set HttpType to „https“ in SysConfig -> Core.

Imagick und „libgomp: Thread creation failed: Resource temporarily unavailable“

Bei der Bildbearbeitung mit Imagick (PHP) kann es mitunter zu einem Timeout bzw. Internal Server Error kommen und die Grafik wird nicht erstellt. In meinem Fall immer dann, wenn man versucht einen Text in der Grafik mittels Imagick::annotateImage() darzustellen.

Schaut man sich die error.log des Webservers an, dann stolpert man über den Fehler „libgomp: Thread creation failed: Resource temporarily unavailable“.

Was ist das Problem? Imagick scheint mehr Threads für die Bilderstellung beanspruchen zu wollen, als verfügbar sind.

Wie kann man die Anzahl der Threads eingrenzen? Folgende Einstellungen sollten gesetzt werden (hier z.B. über die .htaccess):

SetEnv MAGICK_THREAD_LIMIT 4
SetEnv OMP_NUM_THREADS 4

Ist man sich unsicher, wieviele Threads das System zur Verfügung stellt, dann kann man diesen Wert schrittweise erhöhen (1, 2, 4, 8, …), bis der Fehler auftritt. Die Einstellung sollte auch direkt aus dem PHP-Script heraus mit putenv() möglich sein.

FastCGI und ‚Authorization‘ Header

FastCGI scheint in den Standardeinstellungen den Authorization Header zu entfernen. Um diesen dennoch nutzen zu können, gibt es verschiedene Möglichkeiten:

Über .htaccess mit:

RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.+)
RewriteRule ^(.*)$ $1 [E=HTTP_AUTHORIZATION:%1,PT]

Oder:

SetEnvIf Authorization (.+) HTTP_AUTHORIZATION=$1

Oder in der FastCGI Config:

FastCGIConfig -pass-header HTTP_AUTHORIZATION

Apache2, PHP und MySQL über MacPorts installieren

Es gibt hier im Blog bereits eine Vielzahl an Posts zu diesem Thema. Warum? Mit jedem Update von Mac OS X scheint sich wieder etwas zu ändern, sodass die Installation von Apache / PHP / MySQL mittels MacPorts nicht mehr funktionieren möchte.

Was bei den einzelnen OS X Versionen zu beachten ist, ist in den HowTo-Beiträgen auf macports.org bestens beschrieben: https://trac.macports.org/wiki/howto.

Detaillierte Information gibt es auf den Unterseiten zu Apache2, PHP und auch MySQL.

MacPorts und Apache2 unter Yosmite (oder später)

Heute bin ich mal wieder auf ein Problem mit dem Apache2 unter Mac OS X gestoßen. Dabei wollte der über MacPorts installierte Server nicht mehr starten. Stattdessen hatte OS X eine andere Installation von Apache2 gestartet…warum auch immer. Vermutlich lag das am Beta-Update von OS X, welches man als Apple-Developer erhält.

Die erste Anlaufstelle zur Fehlersuche war https://trac.macports.org/wiki/howto/Apache2. Hier gibt es eine ausführliche Beschreibung zur Installation bzw. Einstellung zum automatischen Starten des MacPorts Apache2 Servers. Auf dieser Seite ist auch sehr ausführlich beschrieben, welche Besonderheiten bei den verschiedenen Mac OS X Versionen (OS X 10.8 Mountain Lion and earlier, OS X 10.9 Mavericks, OS X 10.10 Yosemite and later) zu beachten sind.

In meinem Fall half der Abschnitt »Step 4: Activate Apache2« weiter.