Kapitel 14 · 14.5
PHP-Einstellungen pro Verzeichnis und über .htaccess
Manchmal soll ein Verzeichnis anders funktionieren als der Rest Ihrer Website. Zum Beispiel ein alter Webshop in einem Unterverzeichnis, der noch nicht auf die neue PHP-Version umgestellt werden kann, oder ein Skript, das mehr Arbeitsspeicher benötigt. Das geht mit einer Datei .htaccess in diesem Verzeichnis. Unsere Server laufen mit LiteSpeed, und LiteSpeed liest PHP-Regeln in .htaccess.
Hinweis: Ein Fehler in .htaccess kann Ihre gesamte Website (oder das Verzeichnis) mit einem Fehler 500 unerreichbar machen. Erstellen Sie zuerst eine Kopie der Datei und testen Sie direkt nach dem Speichern. Wie Sie .htaccess finden und bearbeiten, lesen Sie in Versteckte Dateien wie .htaccess anzeigen und bearbeiten.
Eine PHP-Option für ein Verzeichnis anpassen
Fügen Sie in die .htaccess dieses Verzeichnisses Zeilen wie diese ein:
php_value upload_max_filesize 128M
php_value post_max_size 128M
php_value memory_limit 384M
php_value max_execution_time 300
Für Optionen, die ein oder aus stehen, verwenden Sie php_flag, zum Beispiel php_flag display_errors off.
Die Regeln gelten für dieses Verzeichnis und alle darunter liegenden Verzeichnisse. Setzen Sie sie in die .htaccess von public_html, gelten sie für Ihre gesamte Website.
Tipp: Möchten Sie eine Option für Ihr gesamtes Paket anpassen? Dann machen Sie das besser in Select PHP version (siehe PHP-Optionen: upload_max_filesize, memory_limit und max_execution_time). So steht alles an einer Stelle, und Sie vergessen später nicht, dass noch Regeln in .htaccess stehen.
Eine andere PHP-Version für ein Verzeichnis
Ihr gesamtes Paket verwendet die Version, die Sie in Select PHP version gewählt haben. Möchten Sie einem Verzeichnis (oder einer Subdomain, die ebenfalls ein eigenes Verzeichnis hat) eine andere Version zuweisen, setzen Sie in die .htaccess dieses Verzeichnisses:
<FilesMatch "\.(php)$">
SetHandler application/x-lsphp83
</FilesMatch>
Die Zahl hinter lsphp ist die Version ohne Punkt: 74 für PHP 7.4, 82 für PHP 8.2, 83 für PHP 8.3, 84 für PHP 8.4, und so weiter. Sie können aus denselben Versionen wählen wie in Select PHP version.
Verwenden Sie in diesem Verzeichnis Erweiterungen oder Optionen, die abweichen? Diese gehören zur jeweiligen Version. Wählen Sie dann in Select PHP version vorübergehend diese Version, stellen Sie die Erweiterungen und Optionen ein, und setzen Sie die Version für Ihr Paket anschließend wieder zurück. Die Einstellungen pro Version bleiben erhalten.
Kontrollieren, ob es funktioniert
- Erstellen Sie im Verzeichnis eine Datei info-test.php mit dieser einen Zeile: <?php echo PHP_VERSION, ' ', ini_get('memory_limit');
- Öffnen Sie sie in Ihrem Browser, zum Beispiel https://www.ihredomain.de/alterladen/info-test.php. Sie sehen die PHP-Version und den Arbeitsspeicher.
- Löschen Sie die Datei danach sofort. Lassen Sie keine Testdateien mit Informationen über Ihren Server auf Ihrer Website stehen.
Was funktioniert nicht?
- Eine eigene php.ini in Ihrem Verzeichnis hat keine Wirkung. Verwenden Sie Select PHP version oder .htaccess.
- disable_functions und open_basedir können Sie nicht über .htaccess anpassen. Diese gehören zur Sicherheit des Servers.
- Werte, die bei PHP Instellingen als Überschreibung für die Domain festgelegt sind (siehe PHP Instellingen in DirectAdmin oder Select PHP version: was ist der Unterschied?), haben Vorrang vor .htaccess.
