php.ini Datei

Im Root-Verzeichnis der Website (z.B. /kunden/homepages/20/d8337983a7/htdocs/var/www/your-domain-de/) eine Datei php.ini anlegen.

Da die php.ini-Datei aber immer nur in dem Verzeichnis wirksam ist, in dem sie liegt, muss diese manuell in jedes einzelne Verzeichnis kopiert werden. Das kann schnell sehr aufwändig werden und muss zudem für jede Änderung wiederholt werden.

Geben Sie folgenden Befehl ein und betätigen Sie die ENTER-Taste, um die Symlinks zu erstellen:

find -type d -exec ln -sf $PWD/php.ini {}/php.ini \;

Da im aktuellen Verzeichnis bereits eine php.ini-Datei existiert und daher kein Symlink generiert werden kann, erhalten Sie den Hinweis "ln: creating symbolic link `./php.ini': File exists". Diese Meldung können Sie ignorieren.

Beispiele

error_reporting = E_ALL | E_STRICT;
log_errors = Off;
display_errors = Off;
error_log = /kunden/homepages/20/d833798397/htdocs/php-errors.log;
max_execution_time=240;
max_input_vars=1500;
memory_limit=128M;

error logs aktivieren

pfad IONOS:
/kunden/homepages/20/d833798397/htdocs

error logs aktivieren:
in der php.ini:

error_reporting = E_ALL | E_STRICT;
log_errors = On;
display_errors = Off;
error_log = /kunden/homepages/20/d833798397/htdocs/php-errors.log;

opcache aktivieren

In der php.ini (ACHTUNG: Hinweis beachten oben) folgendes eintragen:

zend_extension=opcache.so;
opcache.enable=1;
opcache.memory_consumption=64;
opcache.interned_strings_buffer=16;
opcache.max_accelerated_files=5000;
opcache.revalidate_freq=180;
opcache.fast_shutdown=0;
opcache.enable_cli=1;
opcache.revalidate_path=0;
opcache.validate_timestamps=2;
opcache.max_file_size=0;
opcache.file_cache=/kunden/homepages/20/d833798397/htdocs/var/www/hmd-kaltenbach-de/.opcache;
opcache.file_cache_only=1;

Read pdf and Read ai

Testen, ob PDF funktioniert

Die Unterstützung für PDF ist bei ImageMagick ist im IONOS Webhosting aus Sicherheitsgründen standardmäßig deaktiviert. In der Konsole im Root-Verzeichnis folgenden Befehl ausführen:

convert -verbose -density 150 -trim typo3/sysext/install/Resources/Public/Images/TestInput/Test.pdf[0] -quality 100 -flatten -sharpen 0x1.0 test.jpg

Ausgabe wahrscheinlich:

convert-im6.q16: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408.

Wenn Sie Dateien in das PDF-Format oder umgekehrt konvertieren möchten, aktivieren Sie zunächst die PDF-Unterstützung wie folgt (IONOS: www.ionos.de/hilfe/hosting/php-fuer-web-projekt-verwenden/imagemagick-nutzen/):

Erstellen Sie das Verzeichnis .config/ImageMagick im Hauptverzeichnis Ihres Webspace.
Erstellen Sie eine Textdatei mit dem Namen policy.xml und kopieren Sie den folgenden Code in diese Datei:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policymap [
  <!ELEMENT policymap (policy)+>
  <!ATTLIST policymap xmlns CDATA #FIXED ''>
  <!ELEMENT policy EMPTY>
  <!ATTLIST policy xmlns CDATA #FIXED '' domain NMTOKEN #REQUIRED
    name NMTOKEN #IMPLIED pattern CDATA #IMPLIED rights NMTOKEN #IMPLIED
    stealth NMTOKEN #IMPLIED value CDATA #IMPLIED>
]>
<!--
  Configure ImageMagick policies.
  Derived from /etc/ImageMagick-6/policy.xml.
-->
<policymap>
  <!-- <policy domain="system" name="shred" value="2"/> -->
  <!-- <policy domain="system" name="precision" value="6"/> -->
  <!-- <policy domain="system" name="memory-map" value="anonymous"/> -->
  <!-- <policy domain="system" name="max-memory-request" value="256MiB"/> -->
  <!-- <policy domain="resource" name="temporary-path" value="/tmp"/> -->
  <policy domain="resource" name="memory" value="256MiB"/>
  <policy domain="resource" name="map" value="512MiB"/>
  <policy domain="resource" name="width" value="16KP"/>
  <policy domain="resource" name="height" value="16KP"/>
  <!-- <policy domain="resource" name="list-length" value="128"/> -->
  <policy domain="resource" name="area" value="128MB"/>
  <policy domain="resource" name="disk" value="1GiB"/>
  <!-- <policy domain="resource" name="file" value="768"/> -->
  <policy domain="resource" name="thread" value="2"/>
  <!-- <policy domain="resource" name="throttle" value="0"/> -->
  <!-- <policy domain="resource" name="time" value="3600"/> -->
  <!-- <policy domain="coder" rights="none" pattern="MVG" /> -->
  <!-- <policy domain="module" rights="none" pattern="{PS,PDF,XPS}" /> -->
  <!-- <policy domain="delegate" rights="none" pattern="HTTPS" /> -->
  <!-- <policy domain="path" rights="none" pattern="@*" /> -->
  <!-- <policy domain="cache" name="memory-map" value="anonymous"/> -->
  <!-- <policy domain="cache" name="synchronize" value="True"/> -->
  <!-- <policy domain="cache" name="shared-secret" value="passphrase" stealth="true"/> -->
  <!-- <policy domain="system" name="pixel-cache-memory" value="anonymous"/> -->
  <!-- <policy domain="system" name="shred" value="2"/> -->
  <!-- <policy domain="system" name="precision" value="6"/> -->
  <!-- not needed due to the need to use explicitly by mvg: -->
  <!-- <policy domain="delegate" rights="none" pattern="MVG" /> -->
  <!-- use curl -->
  <policy domain="delegate" rights="none" pattern="URL" />
  <policy domain="delegate" rights="none" pattern="HTTPS" />
  <policy domain="delegate" rights="none" pattern="HTTP" />
  <!-- in order to avoid to get image with password text -->
  <policy domain="path" rights="none" pattern="@*"/>
  <!-- enable processing on data types PDF, PNG -->
  <policy domain="coder" rights="read | write" pattern="{PS,PS2,PS3,EPS,XPS,PDF,PNG}" />
  <policy domain="module" rights="read | write" pattern="{PS,PS2,PS3,EPS,XPS,PDF,PNG}" />
</policymap>

IONOS, Doku falsch, denn: I did some experiments with ~/.config/ImageMagick/policy.xml and found out that this config is actually used and working. BUT you can't allow things that are disabled globally. You can only add further restrictions to your users processes.

Herausfinden, welche policies verwendet werden:

identify -list policy

Meine anlegelte .config/ImageMagick/policy.xml war laut Support richtig angelegt. Der Sachverhalt wurde "zur genauen Überprüfung einmal an unsere technische Fachabteilung" weitergeleitet (06.08.2021)

autoprepend.php anlegen

Damit unter Image Processing PDF- und AI-Dateien gelesen werden können, muss im Rootverzeichnis eine Datei .user.ini (der Punkt davor gehört dazu!) angelegt werden mit folgendem Inhalt:

auto_prepend_file = /homepages/31/d446963216/htdocs/2021.rossini-michelstadt.de/autoprepend.php
.user.ini
<?
putenv("HOME=/homepages/31/d446963216/htdocs/2021.rossini-michelstadt.de");
?>
autoprepend.php

Achtung: Der IONOS-Support hatte die Datei zwar angelegt, aber mit Leerzeilen. Dann kam der "header already sent"-Fehler.

Composer herunterladen

curl -sS getcomposer.org/installer | /usr/bin/php5.5-cli

Danach liegt in deinem Webspace eine composer.phar Datei. Wenn du nun die composer.phar direkt aufrufst, wirst du einen Fehler bekommen, da Composer nicht automatisch die richtige PHP-Version findet.

Composer zum ersten Mal starten:

/usr/bin/php5.5-cli composer.phar