Entschuldigung, ich habe keine Ahnung, was du damit meinst :(
Hannes
@Aamir, Sie benötigen die Berechtigung Ihres Webhosts, um die Konfiguration Ihres Webservers zu ändern. Oft lassen sie dich solche Sachen nicht ändern.
Hellozimi
Kann ich upload_max_filesize und max_execution_time in der htaccess-Datei ändern?
Aamir
2
@Col, ich bin anderer Meinung, er möchte die Änderungen im laufenden Betrieb und nicht über die gesamte Anwendung hinweg vornehmen, also fragt er, wie er das tun kann. Und selbst wenn er fragen würde, wie er nur ein paar Dinge in der php.ini ändern kann, könnte es eine Neulingsfrage sein, aber trotzdem eine legitime Frage.
Hannes
1
@IulianOnofrei in Ordnung, ich habe nur das Bedürfnis verspürt, darauf hinzuweisen: D, aber wenn Sie nicht wissen, was es ist, ist es immer noch gut, es nachzuschlagen ... "Wer nicht aus der Geschichte lernen kann, ist dazu verdammt, es zu wiederholen" und all das …
Ein globales Ausführungszeitlimit von LOW ist aus Leistungsgründen für nicht so zuverlässige Anwendungen meistens eine gute Idee. Daher möchten Sie möglicherweise nur zulassen, dass die Skripte länger ausgeführt werden, als dies unbedingt erforderlich ist.
ps: vergiss nicht post_max_size und upload_max_filesize (wie die erste Antwort schon gesagt hat)
Wenn das, was Sie tun müssen, nur für 1 oder 2 Seiten spezifisch ist, empfehle ich, set_time_limit zu verwenden, damit es nicht die gesamte Anwendung betrifft .
set_time_limit(some_values);
Natürlich müssen diese beiden Werte (post_max_size & upload_max_filesize) untersucht werden.
set_time_limit () hat nichts mit Datei-Uploads zu tun
Your Common Sense
1
Dies ist nicht genau genug Col. Shrapnel. Während in Unix-Umgebungen die maximale Ausführungszeit mit der vom PHP-Thread verwendeten kumulierten CPU-Zeit verglichen wird, wird in Windows-Systemen die absolute Zeit verwendet. Das Hochladen erfolgt meistens in "Leerlaufzeit" (IO-Wait). Aber wie Sie sehen, können Uploads gestoppt werden, wenn es zu lange dauert.
Christoph Strasen
4
Wenn Sie zufällig einen Microsoft IIS- Server verwenden, müssen Sie möglicherweise zusätzlich zu den von anderen genannten php.ini- Einstellungen die Einstellungen für das Ausführungszeitlimit für die PHP FastCGI-Anwendung im IIS Server Manager erhöhen:
Schritt 1) Öffnen Sie den IIS Server Manager (normalerweise unter Server Manager im Startmenü und dann unter Tools / Internet Information Services (IIS) Manager ).
Schritt 2) Klicken Sie auf die Hauptverbindung (nicht spezifisch für eine bestimmte Domäne).
Schritt 3) Suchen Sie im Abschnitt IIS nach den FastCGI-Einstellungen (siehe unten).
Schritt 4) Darin rechten Maustaste auf die PHP - Anwendung und wählen Sie Bearbeiten ... .
Schritt 5) Überprüfen Sie die Zeitüberschreitungen (siehe unten).
In meinem Fall betrugen die Standardzeitlimits hier 70 und 90 Sekunden. Ersteres verursachte einen 500 Internal Server Error bei PHP-Skripten, der länger als 70 Sekunden dauerte.
Ich weiß, dass Sie speziell nach dem PHP-Timeout fragen, aber niemand anderes scheint erwähnt zu haben, dass es auf dem Webserver auch ein Timeout geben kann, das dem PHP-Timeout sehr ähnlich sein kann.
Also, wenn Sie versucht haben:
Erhöhen des Timeouts in php.ini durch Hinzufügen einer Zeile: max_execution_time = {Anzahl der Sekunden, dh 60 für eine Minute}
Erhöhen Sie das Zeitlimit in Ihrem Skript selbst, indem Sie Folgendes hinzufügen: ini_set ('max_execution_time', '{Anzahl der Sekunden, dh 60 für eine Minute}');
Und Sie haben mit der Funktion phpinfo () überprüft, ob max_execution_time tatsächlich erhöht wurde. Dann möchten Sie möglicherweise versuchen, dies zu .htaccess hinzuzufügen, um sicherzustellen, dass Apache selbst keine Zeitüberschreitung aufweist:
Wenn Sie die php.ini nicht bearbeiten können (z. B. auf Ihrem Server), können Sie versuchen, die php.ini-Parameter in Ihrem PHP-Code zu ändern. Versuchen:
ini_set('max_execution_time','NUMBER OF SECONDS TO ALLOW BEFORE TIMEOUT');
Wenn dies nicht funktioniert, versuchen Sie auf die gleiche Weise, 'set_time_limit' einzustellen. Darüber hinaus würde ich sagen, dass Sie nur die Möglichkeit haben, Ihren Host zu kontaktieren. Diese Einstellungen können im abgesicherten Modus nicht geändert werden.
Hannes hat dies eine Minute vor dem Posten erhalten und weist korrekt darauf hin, dass set_time_limit () nicht von ini_set gesetzt werden sollte, wie in dieser Antwort angegeben, sondern indem die Sekunden in Klammern gesetzt werden. Voted Hannes up.
John
1
Testen Sie, ob Sie sich im abgesicherten Modus befinden. Wenn nicht, stellen Sie das Zeitlimit (lokaler Wert) auf das gewünschte Maß ein:
if(!ini_get('safe_mode')){
echo "safe mode off";
set_time_limit(180);// seconds
phpinfo();// see 'max_execution_time'}
* Sie können das Zeitlimit nicht auf diese Weise einstellen, wenn der abgesicherte Modus aktiviert ist.
Optional: Wenn Sie die Konfiguration für php.ini festlegen, diese aber immer noch nicht hochladen können
-dies ist PHP-Funktion, um Fehlercode zu überprüfen
$error_type =[];
$error_type[0]="There is no error";
$error_type[1]="The uploaded file exceeds the upload_max_filesize directive in php.ini.";
$error_type[2]="The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.";
$error_type[3]="The uploaded file was only partially uploaded.";
$error_type[4]="No file was uploaded.";//$error_type["5"] = "";
$error_type[6]="Missing a temporary folder. Introduced in PHP 5.0.3.";
$error_type[7]="Failed to write file to disk. Introduced in PHP 5.1.0.";
$error_type[8]="A PHP extension stopped the file upload. PHP does not provide a way to ascertain which extension caused the file upload to stop; examining the list of loaded extensions with phpinfo() may help. Introduced in PHP 5.2.0.";//------------------------------//--> show msg error.
$status_code = $_FILES["uploadfile"]["error"];if($status_code !=0){
echo $error_type[$status_code];exit;}
Um das Zeitlimit wirklich zu erhöhen, ziehe ich es vor, zuerst den aktuellen Wert zu erhalten. set_time_limiterhöht nicht immer das Zeitlimit. Wenn der aktuelle Wert (zB aus php.inioder früher gesetzt) höher als der Wert in der aktuellen Aufruf verwendet wird set_time_limit, wird es sinkt die Frist!
Was ist mit einem kleinen Helfer wie diesem?
/**
* @param int $seconds Time in seconds
* @return bool
*/function increase_time_limit(int $seconds):bool{return set_time_limit(max(
ini_get('max_execution_time'), $seconds
));}// somewhere else in your code
increase_time_limit(180);
Antworten:
Sie müssen einige Einstellungen in Ihrer php.ini ändern:
Wo sich Ihre PHP.ini befindet, hängt von Ihrer Umgebung ab. Weitere Informationen: http://php.net/manual/en/ini.list.php
quelle
Sie sollten dies auch zur Laufzeit mit tun können
set_time_limit(100);
http://php.net/manual/en/function.set-time-limit.php
oder in deiner vhost-config
php_admin_value max_execution_time 10000
Ein globales Ausführungszeitlimit von LOW ist aus Leistungsgründen für nicht so zuverlässige Anwendungen meistens eine gute Idee. Daher möchten Sie möglicherweise nur zulassen, dass die Skripte länger ausgeführt werden, als dies unbedingt erforderlich ist.
ps: vergiss nicht post_max_size und upload_max_filesize (wie die erste Antwort schon gesagt hat)
quelle
Um die Antwort von Hannes zu vervollständigen.
Sie müssen einige Einstellungen in Ihrer php.ini ändern:
Wenn jemand unbegrenzt eingeben möchte (ich weiß nicht warum, aber wenn Sie möchten), können Sie die Zeit auf 0 setzen:
Sie müssen einige Einstellungen in Ihrer php.ini ändern:
Und wenn Sie nicht wissen, wo ist Ihre php.ini. Sie können eine Datei "name.php" auf Ihrem Server erstellen und Folgendes eingeben:
Und auf Ihrer Website können Sie die Konfiguration Ihrer php.ini sehen und sie ist markiert, wo sie sich befindet.
Bearbeiten am 9. Januar 2015:
Wenn Sie nicht auf Ihre php.ini zugreifen können, haben Sie zwei weitere Optionen.
Sie können diese Zeile direkt in Ihrer "name.php" -Datei festlegen, aber ich finde für diese Option nicht für upload_max_filesize:
Oder in ".htaccess"
quelle
Wenn das, was Sie tun müssen, nur für 1 oder 2 Seiten spezifisch ist, empfehle ich, set_time_limit zu verwenden, damit es nicht die gesamte Anwendung betrifft .
Natürlich müssen diese beiden Werte (post_max_size & upload_max_filesize) untersucht werden.
Sie können es entweder über die Funktion ini_set einstellen
oder direkt in der php.ini-Datei wie oben von Hannes, oder setzen Sie sie wie unten in .htaccess
quelle
Als Ergänzung zu den obigen Antworten können Sie folgende
set_time_limit()
Funktionen verwenden:http://php.net/manual/en/function.set-time-limit.php
Wenn Sie
0
als Argument übergeben, wird Ihr Skript ohne zeitliche Begrenzung ausgeführt.quelle
Wenn Sie zufällig einen Microsoft IIS- Server verwenden, müssen Sie möglicherweise zusätzlich zu den von anderen genannten php.ini- Einstellungen die Einstellungen für das Ausführungszeitlimit für die PHP FastCGI-Anwendung im IIS Server Manager erhöhen:
Schritt 1) Öffnen Sie den IIS Server Manager (normalerweise unter Server Manager im Startmenü und dann unter Tools / Internet Information Services (IIS) Manager ).
Schritt 2) Klicken Sie auf die Hauptverbindung (nicht spezifisch für eine bestimmte Domäne).
Schritt 3) Suchen Sie im Abschnitt IIS nach den FastCGI-Einstellungen (siehe unten).
Schritt 4) Darin rechten Maustaste auf die PHP - Anwendung und wählen Sie Bearbeiten ... .
Schritt 5) Überprüfen Sie die Zeitüberschreitungen (siehe unten).
In meinem Fall betrugen die Standardzeitlimits hier 70 und 90 Sekunden. Ersteres verursachte einen 500 Internal Server Error bei PHP-Skripten, der länger als 70 Sekunden dauerte.
quelle
Sie hatten einen Tippfehler: ini_set ('max_input_time', '200M') - Wertesatz muss ein int sein, wie ini_set ('max_input_time', '200')
quelle
Ich weiß, dass Sie speziell nach dem PHP-Timeout fragen, aber niemand anderes scheint erwähnt zu haben, dass es auf dem Webserver auch ein Timeout geben kann, das dem PHP-Timeout sehr ähnlich sein kann.
Also, wenn Sie versucht haben:
Und Sie haben mit der Funktion phpinfo () überprüft, ob max_execution_time tatsächlich erhöht wurde. Dann möchten Sie möglicherweise versuchen, dies zu .htaccess hinzuzufügen, um sicherzustellen, dass Apache selbst keine Zeitüberschreitung aufweist:
Weitere Informationen hier: https://www.antropy.co.uk/blog/php-script-keeps-timing-out-despite-ini-set/
quelle
Überprüfen Sie zuerst den
php.ini
Dateipfad durchphpinfo()
; und dann diePHP.INI
Parameter geändert :Apache neu gestartet
Hinweis : Sie können den Befehl auch verwenden, um
php.ini
unter Linux zu suchenquelle
Wenn Sie die php.ini nicht bearbeiten können (z. B. auf Ihrem Server), können Sie versuchen, die php.ini-Parameter in Ihrem PHP-Code zu ändern. Versuchen:
Wenn dies nicht funktioniert, versuchen Sie auf die gleiche Weise, 'set_time_limit' einzustellen. Darüber hinaus würde ich sagen, dass Sie nur die Möglichkeit haben, Ihren Host zu kontaktieren. Diese Einstellungen können im abgesicherten Modus nicht geändert werden.
quelle
Testen Sie, ob Sie sich im abgesicherten Modus befinden. Wenn nicht, stellen Sie das Zeitlimit (lokaler Wert) auf das gewünschte Maß ein:
* Sie können das Zeitlimit nicht auf diese Weise einstellen, wenn der abgesicherte Modus aktiviert ist.
quelle
Optional: Wenn Sie die Konfiguration für php.ini festlegen, diese aber immer noch nicht hochladen können
-dies ist PHP-Funktion, um Fehlercode zu überprüfen
quelle
Sie können auch eine maximale Ausführungszeit in Ihrer
.htaccess
Datei festlegen :quelle
Um das Zeitlimit wirklich zu erhöhen, ziehe ich es vor, zuerst den aktuellen Wert zu erhalten.
set_time_limit
erhöht nicht immer das Zeitlimit. Wenn der aktuelle Wert (zB ausphp.ini
oder früher gesetzt) höher als der Wert in der aktuellen Aufruf verwendet wirdset_time_limit
, wird es sinkt die Frist!Was ist mit einem kleinen Helfer wie diesem?
Siehe auch: Holen Sie sich max_execution_time im PHP-Skript
quelle