• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP bringt nach Aufruf einer Datei öfters mal Fatal Error

andynail

Mitglied
Hallo zusammen

ich öffnete bisher immer Textdateien zum editieren mit VBS. Und dann lies ich irgend wann mal des dies auch mit PHP möglich sei. Doch wie rufe ich bitte die Datei auf und die Webseitte soll stehen bleiben? Ich habs so gelöst:

Der Link auf der Seite:
Code:
<a href="javascript:location.href='Open.php?Datei=Wunschliste.txt&Seite=' + location.href">Musik Wunschliste</a>

Der Aufruf der Datei in einer PHP Datei namens Open:
Code:
<?php
$pfad = substr($_SERVER['DOCUMENT_ROOT'],0,1);
$datei = $_GET['Datei'];
$seite = $_GET['Seite'];
$titel = $_GET['t'];
$teile = explode('/', $seite);
system("%windir%\\notepad.exe $pfad:/Users/andy/Documents/$datei");
$seite = $teile[count($teile)-1];
header("Location:http:/Startseite/$seite&t=$titel");
?>

Und jetzt bekomme ich öfters mal die Meldung nach dem Öffnen der Datei:

Fatal error: Maximum execution time of 30 seconds exceeded in C:\Users\andy\Webs\server2go\htdocs\Startseite\Open.php on line 12

Und die öffnende Webseite wird in einem IFrame so aufgerufen:

<a href="Musik.html?b=2&t=7" Target="Daten" name="Gruppe">Musik</a>

Was soll das denn bitte?

Danke gruß Andreas
 
Maximum execution time of 30 seconds exceeded
gibt wieder, dass PHP mehr als die ihm zugewiesene Zeit benötigt (hier 30 Sekunden) umd die Datei zu öffnen. Der Grund kann vieles Sein, Datei zu gross, von einem anderen Pozess belegt oder schlich gelocked und nicht wieder freigegeben.

Versuch einfach mal die Datei mit den file() Befehl einzulesen, wenn du mit / als Delimiter arbeitest, könntest du auch PHP: fgetcsv - Manual arbeiten.

Alternativ kannst du in der php.ini die max_execution_time höher setzen.
 
Hallo und vielen Dank für die schnellen Antworten.

Und sorry, ich hatte die Zeilen 1:1 aus der Datei rauskopiert und hier steht es ohne Absätze. Die Zeile lautet:

$seite = $teile[count($teile)-1];

Es ist wohl so, daß wenn ich die Textdatei länger als 30 Sekunden editiere, dann der Error erscheint. Ich will ja Hand anlegen in der Datei und sie nicht nur einlesen.

Jetzt laß ich davon im Internet und baute die Seite komplett auf diese geniale Möglichkeit um, damit sie auch im Firefox läuft. Und dann mit so einem Ergebnis: Scheiße!

Die Seite + den Dateien soll ja auf einen USB Stick, so daß ich nicht überall die Zeiteinstellungen ändern kann.

Gibt es denn noch eine Lösungsvariante?

Danke gruß Andreas
 
Hallo

was ist denn Reihe 12? Die Fehlermeldung erscheint immernoch. Und diese Funktion soll ja für Shell Anweisungen verwendbar sein. Und in der letzten Reihe steht ein Header um die Seite wieder laden zu können. Zählt man nun die Zeile mit <?php mit oder nicht? Und wenn nicht dann wäre ja die Letze Zeile Reihe 12 mit der Verwendung der header Funktion:

<?php

$pfad = substr($_SERVER['DOCUMENT_ROOT'],0,1);
$datei = $_GET['Datei'];
$seite = $_GET['Seite'];
$titel = $_GET['t'];
$teile = explode('/', $seite);
$Parameter = "$pfad:/Users/andy/Documents/$datei";

system('%windir%\\notepad.exe '.escapeshellarg($Parameter));

$seite = $teile[count($teile)-1];

header("Location:http:/Startseite/$seite&t=$titel");

?>

Danke gruß Andreas
 
Die header Funktion läd deine Seite sofort neu, wird also nach system sofort ausgeführt.
Nach einer Browserausgabe, führt der header befehl zu einem Fehler.

Und nochmal, Maximum execution time of 30 seconds exceeded bedeutet, dass die Laufzeit deines Scriptes überschritten wurde. Jedes Script bekommt einem maximale Ausführungszeit zugewiesen (bei dir 30 Sekunden = defaultwert) dein Script läuft aber länger und wird nach 30 Sekunden abgebrochen.

http://at.php.net/manual/de/ini.list.php
 
Die Fehlermeldung erscheint immernoch. Und diese Funktion soll ja für Shell Anweisungen verwendbar sein.
Du verstehst das Internet nicht. Das was du da machst ist der Horror jedes Webmasters/Hosters. Du versucht den Server lahmzulegen in dem du die Prozesse nicht beendest.

Zu deinem Ansatz: Es ist kompletter Unsinn, über den Server Terminalprogramme aufzurufen, die du dann benutzen möchtest. Wenn du eine Datei über http bearbeiten möchtest musst du einen komplett anderen Weg gehen.
 
Wo wird denn bitte noch Script ausgeführt? Und es werden ja auch immer Beispiele mit dem öffnen des Notepads. Oder ist es so das Notepad dann gestartet ist und damit die Funktion auch beendet ist? Aber Notepad wird ja geöffnet nur mit dem Aufruf einer Datei im Anhang in die System Zeile. Und welche Varante gibt es dann noch? Davor war es bei mir VBScript, doch das läuft ja nur im IE.

Also danke Gruß Andreas
 
Überleg doch mal. wenn du notepad mit system aufrufst, wartet der Befehl system so lange bis du Notpad beendest. Sowas kannst du nicht auf einem Server machen.
 
Zurück
Oben