PHP: ini-Werte überschreiben

(Kommentare: 18)

Manche Konfigurationswerte in der php.ini können nicht im PHP-Script via ini_set() überschrieben werden. Bei manchen Providern geht es dann in der Datei .htaccess mit php_value, bei anderen wieder über eine eigene php.ini-Datei.

Ich hatte folgendes Problem: Bei einem meiner Strato-Hosting-Pakete war die Größe des Post-Requests (z.B. bei Datei-Uploads) auf 8MB beschränkt. Dies ist definiert in der php.ini (Wert "post_max_size"). Diesen kann man leider nicht im PHP-Skript mit ini_set() setzen (Typ "PHP_INI_PERDIR", vgl. php manual).

Bei HostEurope ging es in einem anderen Fall, indem ich php-ini-Werte in die Datei .htaccess (im DocRoot- oder einem entsprechenden Unter-Verzeichnis) geschrieben habe, z.B.:

php_value memory_limit 256M
php_value post_max_size 32M
php_value upload_max_filesize 24M
php_value max_execution_time 300

Update 2023: Auch bei Host Europe eine php.ini-Datei ins Document Root legen und die Werte im Stil wie unten beschrieben.


Bei Strato hat's so nicht funktioniert, dort musste ich in das Verzeichnis mit meinen Admin-Skripten, die mehr erforderten, eine Datei "php.ini" legen (siehe Strato FAQ, Update 7.1.2016: Strato-Hilfe zu php.ini). Scheinbar wird dabei aber mehr überschrieben, als man so denkt, ich habe dann alle im eben genannten FAQ-Beitrag aufgeführten Variablen explizit gesetzt, also etwa so hier:


file_uploads = On 
max_execution_time = 120
post_max_size = 20M
memory_limit = 200M
register_globals = Off
safe_mode = Off
upload_max_filesize = 15M
session.gc_maxlifetime = 1440
session.cache_expire = 180


So ging's dann.

 

Bei ionos (1&1) analog: php.ini-Datei schreiben und ins Document root der Website speichern (siehe ionos-Hilfe). Z.B. mit

error_reporting = E_ALL | E_STRICT
upload_max_filesize = 6M
log_errors = On
display_errors = Off
error_log = /PFAD_ZUM_EIGENEN_WEBSPACE/php-errors.log

 

 

 

Zurück

Kommentare

Kommentar von Mo |

Hallo,

bin zufällig auf Ihre Seite gestoßen.
Vielen Dank für die Doku.

Ich habe einen VServer bei HostEurope.de und haben zurzeit leider immer noch Problem mit dem Upload.
Für eine 5MB große Datei braucht der upload über 2 Minuten, wobei dieser nicht länger als 20 Sekunden bräuchte.

Ich habe nun versucht genau nach Ihrer Anleitung eine eigene .htaccess-Datei in das DocRoot verzeichnis zu legen. Leider dauert der Upload immer noch sehr lange.
Dann bin ich hingegangen und habe die gleiche .htaccess-Datei in das Verzeichnis zu legen, in der das Upload-Script sich befindet. Aber scheinbar war das leider auch nicht ganz korrekt.

Frage:
Wo könnte ich die Datei noch hinschreiben?
Muss ich irgendwo auf die neu erstellte .htaccess-Datei verweisen?

Ich würde mich sehr freuen, wenn Sie mir die obigen Fragen beantworten könnten.

Besten Dank und viele Grüße aus Köln,
Mo

Kommentar von webdecker |

Ich fürchte, da müsste man sich an den Support wenden.
Ich hatte ja seinerzeit nur das Problem der Upload-Dateigröße (upload_max_filesize, post_max_size) und der PHP-Skriptlaufzeit (max_execution_time).
Das konnte ich damit lösen. Es sagt aber nichts über die Geschwindigkeit des Uploads bzw. damit verbundene Probleme...

Kommentar von Philipp Lang |

Hallo,

ich benutze Owncloud und möchte gerne die Uploadgrenze, die zur Zeit 8MB beträgt, erhöhen.

Habe die Werte in der php.ini so geändert:
allow_url_fopen = on
upload_max_filesize = 30M
memory_limit = 32M
post_max_size = 30M

Leider ohne Erfolg.

Kann mir jemand weiterhelfen?

Vielen Dank im Vorraus

Mfg
P. Lang

Kommentar von webdecker |

"owncloud" sagt mir nichts. Hier müsste man heraus finden, ob überhaupt eine php.ini ausgewertet wird und in welchem Verzeichnis sie stehen sollte.
Oder ob man das im PHP-Skript-Code via ini_set anpassen könnte.
Oder ob da eine PHP-Anwendung läuft, die für sich noch mal eine Upload-Größe setzt bzw. auswertet.

Obige Geschichten sind ja nur interessant für Umgebungen, wo ich bestimmte Ini-Variablen nicht via ini_set setzen kann.

Kommentar von Der Anfänger |

Moin,
habe auch das Problem mit der Uploadgrenze und habe jetzt php.ini mit dem o.g. Eintrag probiert - leider ohne Erfolg. Bei einem Eintrag in die .htaccess geht gar nichts mehr - was mache ich falsch - die Seite liegt auf einem 1und1 Server

Kommentar von webdecker |

Welche Einstellung war's denn in htaccess?

Hilft das hier weiter?

https://hilfe-center.1und1.de/skript--und-programmiersprachen-c82634/php-c82686/bedienung-c82739/welche-php-einstellungen-kann-ich-aendern-a791899.html

Kommentar von Sebastian |

Hallo,
bin ganz neu bei Strato und habe auch keinerlei Erfahrungen mit WP.
Habe nun mit der Anleitung von oben versucht, die Upload-Größe zu verändern, sprich ich habe im wp-admin ordner eine php.ini mit
file_uploads = On
max_execution_time = 120
post_max_size = 4000M
memory_limit = 200M
register_globals = Off
safe_mode = Off
upload_max_filesize = 4000M
session.gc_maxlifetime = 1440
session.cache_expire = 180
angelegt.
Habe ich das Verfahren falsch verstanden? Muss ich noch in andere Verzeichnisse schreiben?
Vielen Dank schon einmal im Voraus,
Sebastian

Kommentar von webdecker |

Wenn man ganz neu bei Strato ist, sollte PHP 5.6 laufen mit den Standardeinstellungen hier:
https://www.strato.de/faq/article/1315.html

Also mit
upload_max_filesize 32 MB
post_max_size 48 MB

Das sollte in der Regel reichen...
Ansonsten würde ich zuerst mal eine infophp.php-Datei anlegen mit <?php phpinfo(); ?> drin, im Browser aufrufen und schauen, was für die o.g. Werte gesetzt ist.
Ggf. müsste die php.ini ins Hauptverzeichnis / document root.

Kommentar von Edgar |

Hallo Webdecker,
ich habe selbiges Problem bei Strato und frage mich, in welches Verzeichnis die php.ini geladen werden müsste.
Muss ich nach dem Hochladen die Datei noch "ausführen"?
Meine enthält folgende Einstellungen:
post_max_size 16M
upload_max_filesize 16M
max_file_uploads 32M
max_input_vars 5000
Jedoch funktionier der Content-Upload nicht. Sie liegt im "/wordpress" Ordner, in dem auch die wp-login.php etc. liegen.
Der Strato Service glänzt leider nicht durch schnelle Antworten, deshalb versuche ich mein Glück auf diesem Weg. Besten Dank!

Kommentar von webdecker |

Wenn /wordpress das Document Root-Verzeichnis ist, müsste es an sich gehen. "ausführen" muss man es nicht.
Ich würde wie oben gesagt mal ne phpinfo-Datei dort anlegen und schauen, ob die Werde übernommen werden.
Ansonsten ggf. bei Strato die PHP-Version hochsetzen, wie gesagt waren bei dem obigen Fall damit die Grundeinstellungen ausreichend...

Kommentar von Edgar |

...kannst du mir noch kurz mitteilen, was das Document Root-Verzeichnis ist bzw. wie ich es öffnen kann?
Vielen Dank :)

Kommentar von webdecker |

In der Regel das Verzeichnis, in dem man bei Strato beim FTP-Login landet.
Bzw. hier das Verzeichnis, in dem wp-login.php bzw. index.php liegen.
Wenn aber die URL lautet http://www.meinedomain.de/wordpress/wp-login.php, dann ist es das Verzeichnis, in dem wordpress als Verzeichnis liegt.

Kommentar von Edgar |

Super, danke! Alle Einstellungen wurden übernommen, der Content-Upload gelingt trotzdem nicht. So langsam verzweifel ich...und der Strato Support antwortet auch nur alle zwei, drei Tage. Äußerst ärgerlich :(

Kommentar von webdecker |

Vielleicht überschreibt Wordpress da noch mal Werte. Gibts da ne Konfigurationsseite/möglichkeit im Backend, wo man maximale Upload-Größen einstellt?
Bspw. macht Contao so was auch.

Kommentar von Edgar |

...Strato ist ein Misthaufen. Sie erlauben nur extrem eingeschränkt Konfigurationsanpassungen. Fehler liegt also bei ihnen.

Kommentar von markus |

Ich denke, das gleiche, strato ein Dienst ist , zu vergessen

Kommentar von Terra |

bin auf der Suche nach meinem Problem über die Antwort gestolpert die hierzu passt:
Da schrieb ein Strato Kunde das die php.ini ins root Verzeichnis und in dem wp_admin Ordner muss, erst dann klappte es...

Kommentar von Michael |

Gerade "getestet": Wie Terra schreibt: das root der WP Installation (in meinem Fall) und in das /wp_admin kopieren.
Die Werte:
max_execution_time = 210
max_input_vars = 5000
haben dazu geführt, dass im Wordpress / System Status alles grün angezeigt wird. :-)

Einen Kommentar schreiben


Bitte geben Sie den Code ein, den Sie im Bild sehen.