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.
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;
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;
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;
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)
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
<?
putenv("HOME=/homepages/31/d446963216/htdocs/2021.rossini-michelstadt.de");
?>
Achtung: Der IONOS-Support hatte die Datei zwar angelegt, aber mit Leerzeilen. Dann kam der "header already sent"-Fehler.
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