Hallo Freunde,
ich habe eine einfache Datenerfassung über ein Onlineformular in PHP erstellt.
Die Datenbank, Formulare für die Eingabe der Daten und die gesamte Umgebung läuft hervorragend.
Im letzten Schritt habe ich eine Klasse mit deren Hilfe ich mein Datenbestand in Excel.xls ausgeben möchte. (Klasse bekannt als: PHPExcel)
Und hier liegt mein Problem:
Auf dem localhost läuft der PHP-Code fehlerfrei, eine *.xls wird wie erwartet generiert und ausgegeben, doch auf dem Webserver wird die Ausgabe der Seite gleich am Anfang des Codes bei Aufruf von: require_once 'Classes/PHPExcel.php' ; unterbrochen und mit einer leeren, weißen Seite quittiert.
Bzw. je nach Fall der erste Aufruf der Seite ist erfolgreich, bei den nächsten Aufrufen folgt nur eine leere Seite im Browser.
Doch aber wird im PHP-Code die Zeile: require_once 'Classes/PHPExcel.php' ; auskommentiert, erstaunlicher Weise wird der erste Aufruf manchmal ausgeführt, auf die folgenden Versuche folgt dann aber immer eine leere Seite. Wie gesagt; auf dem localhost läuft alles anstandslos!
Gebe es einen Fehler in der Klasse, würde localhost (xxamp) auch streiken, doch dieser funktioniert hier fabelhaft.
Im Voraus lieben Dank für eure Mühe
LG. Robert
Ankündigung
Einklappen
Keine Ankündigung bisher.
Code oder Serverproblem
Einklappen
Neue Werbung 2019
Einklappen
X
-
Zitat von hellbringer Beitrag anzeigenSolange du nicht ein konkretes kleines Beispiel zeigst, bei dem das Problem nachvollziehbar auftritt, ist das sowieso nur Herumraterei.
Das Problem ist bekannt und ihr habt mir mit euren Vorschlägen dabei auch sehr weiter geholfen. Eure Lösung werde ich sobald ich dazu komme dankend in Anspruch nehmen.
Danke für eure Unterstützung, vielleicht kann ich mich mal demnächst mit meiner Unterstützung bei euch revangieren.
Viele Grüße und viel Spaß beim Programmieren
-
Solange du nicht ein konkretes kleines Beispiel zeigst, bei dem das Problem nachvollziehbar auftritt, ist das sowieso nur Herumraterei. Wenn du willst, dass sich jemand konkret deine Situtation am Server ansieht, solltest du einen Jobangebot erstellen. Ich sehe nicht, wie hier ein Forum weiterhelfen können soll. Einen Lösungsweg (auf Spreadsheet updaten) wurde dir bereits genannt. Was du daraus machst, liegt bei dir.
Einen Kommentar schreiben:
-
Zitat von Zeichen32 Beitrag anzeigenDann versuch dich halt mal am Nachfolger von PHPExcel welches noch aktiv weiterentwickelt wird:
https://github.com/PHPOffice/PhpSpreadsheet
Was mich aber trotzdem nachdenklich macht ist Tatsache, daß direkt nach dem Upload auf den Host der Excelexport ganz gut funktioniert hat. Ich habe mehrere Excelabzüge downloaden können, mein Projekt war somit zu diesem Zeitpunkt abgeschlossen.
Ich kann mich heute an die Anzahl der Tests damals nicht mehr erinnern, es sind aber mit Sicherheit mehr als nur eins gewesen.
Das ganze hat also vor einigen Tagen noch gut funktioniert.
Erst später dann konnte ich es nicht glauben, als ich nach ca. 1 Woche die Ausgabe erneut aufgerufen und eine leere Seite direkt nach dem Aufruf angezeigt bekommen habe.
Hat da inzwischen der Schutz auf dem Host die PHPExcel gescannt, die Inhalte als Kritsch eingestuft und gesperrt?
Ich meine, was einmal funktioniert hat, funktioniert grundsätzlich auch immer. Was ist das Problem? Was ist heute anders als es noch vor zwei Wochen gewesen ist?
Nach der Pfadanpassung bekomme ich jetzt einen anderen Fehler:
AH01071: Got error 'PHP message: PHP Fatal error:
Uncaught Error: Class 'PHPExcel_Shared_String' not found in /var/www/vhosts/xxx.org/httpdocs/kfvfs/Classes/PHPExcel/Autoloader.php:11\n
Stack trace:\n
#0 /var/www/vhosts/xxx.org/httpdocs/kfvfs/Classes/PHPExcel.php(6): require()\n
#1 /var/www/vhosts/xxx.org/httpdocs/kfvfs/resource/abegehungphp.php(11): require_once('/var/www/vhosts...')\n
#2 /var/www/vhosts/xxx.org/httpdocs/kfvfs/abegehung.php(4): include('/var/www/vhosts...')\n
#3 {main}\n thrown in /var/www/vhosts/xxx.org/httpdocs/kfvfs/Classes/PHPExcel/Autoloader.php on line 11\n'
Und das hier ist der Anfang der Autoloader.php:
PHPExcel_Autoloader::register();
// As we always try to run the autoloader before anything else, we can use it to do a few
// simple checks and initialisations
//PHPExcel_Shared_ZipStreamWrapper::register();
// check mbstring.func_overload
if (ini_get('mbstring.func_overload') & 2) {
throw new PHPExcel_Exception('Multibyte function overloading in PHP must be disabled for string functions (2).');
}
PHPExcel_Shared_String::buildCharacterSets();
Einen Kommentar schreiben:
-
Ist auch sehr ähnlich, also wenn du das mit PHPExcel zu Stande gebracht hast wirst du das auch mit dem Nachfolger hinbekommen.
Einen Kommentar schreiben:
-
Dann versuch dich halt mal am Nachfolger von PHPExcel welches noch aktiv weiterentwickelt wird:
https://github.com/PHPOffice/PhpSpreadsheet
Einen Kommentar schreiben:
-
Zitat von Zeichen32 Beitrag anzeigenWenn es nur eine reine Tabelle ist, reicht meistens ja schon eine CSV Datei welche man dann in Excel öffnen kann.
Für sonstige Zwecke werden bereits diverse CSV-Abzüge gefertigt und downgeladet, das hat bisher auch hervorragend geklappt.
Einen Kommentar schreiben:
-
Zitat von RobertRW Beitrag anzeigenJa, hausl hat Recht, es liegt an PHPExcel bzw. die PHPExcel ist mit PHP7 nicht kombatibel.
Hat jemand eine Idee wie man eine SQL bzw Tabelle als *.xls am einfachsten ausgeben kann? (Daten aus MariaDB via Onlineformular als Exceltabelle downloaden kann)
Einen Kommentar schreiben:
-
Wenn es nur eine reine Tabelle ist, reicht meistens ja schon eine CSV Datei welche man dann in Excel öffnen kann.
Einen Kommentar schreiben:
-
Ja, hausl hat Recht, es liegt an PHPExcel bzw. die PHPExcel ist mit PHP7 nicht kombatibel.
Hat jemand eine Idee wie man eine SQL bzw Tabelle als *.xls am einfachsten ausgeben kann? (Daten aus MariaDB via Onlineformular als Exceltabelle downloaden kann)
Einen Kommentar schreiben:
-
Bei include solltest immer mit absoluten Pfaden arbeiten. Ich denke da rührt das Problem her. Dann macht es auch Sinn das es local geht und auf dem Server nicht.
Einen Kommentar schreiben:
-
Zitat von tomBuilder Beitrag anzeigen
hast Du das auch installiert auf dem server, oder nur local.
Für dieses Jahr habe ich die Anwendung um den Excel-Export erweitern wollen. Lokal auf dem localhost funktioniert der Download der Daten nur auf dem Webserver bekomme ich beim Aufruf der Seite eine leere Seite im Browser.
Irgendwie schaut das alles nach einem Überlagerungsproblem aus, denn nach dem Hochladen der Module sind anfangs einige Aufrufe möglich, der Fehler ist nach dem ersten Upload erst am nächsten Tag aufgetreten.
Und genauso ist es wenn ich die require auf dem Webserver auskommentiere, dann wird die Seite einmalig geladen und die Excelausgabe wird auch erzeugt - ohne den Verweis auf die Klasse: require_once 'Classes/PHPExcel.php'
Ich vermute, dass irgendwelche Bestandteile der Module irgendwo im Cache hängen bleiben, wie könnte man das Phänomen sonst noch erklären?
Einen Kommentar schreiben:
-
Zitat von RobertRW Beitrag anzeigenWie gesagt, die Class kann nciht gefunden werden doch auf dem localhost wird sie geladen und die Anwendung läuft.
Macht es ggf. Sinn alle Pfade und Namen in Kleinbuchstaben umzuschreiben?
Es ist eine Fangstatistik für meinen Angelverein. Die Anwendung habe ich vor zwei Jahren geschrieben, aktuell nur um die PHPExcel erweitert (bzw. erweitern wollen)
nein nur kleinbuchstaben machwen keinen sinn s.o.
Einen Kommentar schreiben:
-
Unter Linux ist haus nicht Haus und nicht HAUS, unter Windows schon.
Einen Kommentar schreiben:
-
Zitat von RobertRW Beitrag anzeigenIch habe nur überlegt ob der Webserver damit irgendwie Problem haben kann und der Aufwand alle Pfade in Kleinbuchstaben umzuschreiben sich mal lohnt denn sonst kann ich keine signifikante Fehlerquelle erkennen.
Einen Kommentar schreiben:
Einen Kommentar schreiben: