PhpSpreadsheet und Schreibrechte

airtime

Mitglied
Hallo,

möchte gern eine Excel-datei zur Bearbeitung frei geben.
Hierzu habe ich PhpSpreadsheet gefunden und auch mit composer installiert.
Der Hello World code funktioniert leider nicht, ich vermute das es mit den Schreibrechten zusammenhängt?
Mein bisheriger code:
PHP:
<?php

ini_set('display_errors', 1);
ini_set('display_start_up_errors', 1);
error_reporting(E_ALL);

require_once (libpath . 'vendor/autoload.php');

use phpoffice/phpspreadsheet/Spreadsheet;
use phpoffice/phpspreadsheet/Writer/Xlsx;

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setValue('A1', 'Hello World !');

$writer = newXlsx($spreadsheet);
$writer->save('hello_world.xlsx');
?>

Sobald ich die Seite aufrufe ist diese leer und es werden keine Fehler angegeben.
Mache ich da was grundlegendes falsch oder liege ich mit der Vermutung vielleicht recht und wie könnte ich das heraus finden?
Ist mein erster Versuch mit php :oops:

Gruß Air
 
hallo dazu stellen sich mir 2 Fragen
  1. In welcher Umgebung entwickelst du? Windows, Linux, Mac? Lokal unter xampp?
  2. Wird überhaupt eine Datei erzeugt? ggfs im Root-Ordner des Projekt geschaut?#
  3. Was bringt folgende Ausgabe:
PHP:
echo var_dump($writer->save('hello_world.xlsx'));
 
Zuletzt bearbeitet:
Die ersten 2 Fragen wären da sehr Hilfreich.

Ich habe es auch in Verwendung und bei mir gab es da keinerlei Probleme :)

Mein Beispiel:
PHP:
<?php
require_once('./vendor/autoload.php');

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Style\Color;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Style\Font;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
use PhpOffice\PhpSpreadsheet\Style\Protection;
use PhpOffice\PhpSpreadsheet\Style\Style;
use PhpOffice\PhpSpreadsheet\IOFactory;

$spreadsheet = new Spreadsheet();

$sheet = $spreadsheet->getActiveSheet()->setTitle('Statistik');
$sheet->setCellValue('B2', 'Personalstatistik');
$sheet->setCellValue('B4', 'Datum:');
$sheet->setCellValue('C4', '00.00.0000');
$sheet->setCellValue('B6', 'Team:');
$sheet->setCellValue('C6', 'Test');
$sheet->setCellValue('B8', 'Mitarbeiter');
$sheet->setCellValue('C8', 'Personalnummer');
$sheet->setCellValue('E8', 'Information');
$sheet->setCellValue('F8', 'Kürzel');

$writer = new Xlsx($spreadsheet);
$sheetName = 'Test_00.00.0000.xlsx';
$writer->save($sheetName);
?>

Versuch mal meines zu testen und dann ggf. vergleich es mit deiner :)
 
Hallo,

vielen dank für eure Hilfe.
Sorry das ich die Umgebung nicht mit angegeben hab.
Zu den Fragen:
1. In welcher Umgebung entwickelst du? Windows, Linux, Mac? Lokal unter xampp?
Ubuntu 16.04, Apache2
2. Wird überhaupt eine Datei erzeugt? ggfs im Root-Ordner des Projekt geschaut?#
Nein es wird keine xlsx Datei erstellt deshalb dachte ich das es mit den Schreibrechten zusammenhängt.
Hab auch andere Test-php tutorials zur Ausgabe und $_POST Verarbeitung gemacht und das läuft.
Was bringt folgende Ausgabe:
PHP:
echo var_dump($writer->save('hello_world.xlsx'));
Leider keine Ausgabe die Seite bleibt trotzdem leer.

Hab auch den Code von EuroCent probiert, funktioniert auch nicht die Seite bleibt leer:confused:

Gruß Air
 
Dann ist dein Server nicht richtig konfiguriert :)
Das solltest Du einmal nachholen.

Aber um sicher zu gehen versuche mal Xampp oder Mamp über Linux ob es da funktioniert.
 
:( Warum sollte der Server falsch eingerichtet sein?
Bisher funktioniert alles und es funktioniert immer noch. Auch die Verknüpfung mit MySQL.

Jedoch funktioniert PHPSpreadsheet nicht. Wie kann ich das jetzt am besten angehen?
Welcher user versucht den die xlsx Datei zu erzeugen wenn ich PHPSpreadsheet nutze?

Gruß Air
 
naja, so falsch gedacht ist das von @EuroCent nicht. Wenn var_dump nichts ausgibt dann stimmt was nicht. Läuft überhaupt PHP? kommt was wenn du eine php-Datei mit
PHP:
phpinfo();
ausführst?

Hast du mal in die Logs geschaut? Was sagt den var/log/apache2/error.log?
 
Hallo versteht das nicht falsch bin froh das ihr mir hilft.
Aber der Server funktioniert da andere php beispiel scripte funktionieren.
Ich mache bestimmt einen absoluten anfängerfehler jedoch weiß ich noch nicht welchen :oops:
Ich hab mal is_writable ausprobiert und eine test.xlsx Datei erstellt und es kommt false.
Das heißt php kann nicht auf die Datei zugreifen.

Hab auch in die error.log geschaut beim script von EuroCent kommt die Fehlermeldung:
PHP Fatal error: Uncaught PhpOffice\\PhpSpreadsheet\\Writer\\Exception: Could not close zip file Test_00.00.0000.xlsx. in ...Ordner...
Das ist glaub ich von Windows die Pfad angabe oder musst das bei PhpSpreadsheet so sein?

Gruß Air
 
Zuletzt bearbeitet:
Hab die Pfadangabe angepasst jedoch scheint ein / irgendwo unexpected zu sein.
Nur wo bin auf der Suche, vielleicht sieht es ja jemand.
PHP:
<?php
require_once('vendor/autoload.php');
use PhpOffice/PhpSpreadsheet/Spreadsheet;
use PhpOffice/PhpSpreadsheet/Writer/Xlsx;
use PhpOffice/PhpSpreadsheet/Style/Alignment;
use PhpOffice/PhpSpreadsheet/Style/Border;
use PhpOffice/PhpSpreadsheet/Style/Color;
use PhpOffice/PhpSpreadsheet/Style/Fill;
use PhpOffice/PhpSpreadsheet/Style/Font;
use PhpOffice/PhpSpreadsheet/Style/NumberFormat;
use PhpOffice/PhpSpreadsheet/Style/Protection;
use PhpOffice/PhpSpreadsheet/Style/Style;
use PhpOffice/PhpSpreadsheet/IOFactory;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet()->setTitle('Statistik');
$sheet->setCellValue('B2', 'Personalstatistik');
$sheet->setCellValue('B4', 'Datum:');
$sheet->setCellValue('C4', '00.00.0000');
$sheet->setCellValue('B6', 'Team:');
$sheet->setCellValue('C6', 'Test');
$sheet->setCellValue('B8', 'Mitarbeiter');
$sheet->setCellValue('C8', 'Personalnummer');
$sheet->setCellValue('E8', 'Information');
$sheet->setCellValue('F8', 'Kürzel');
$writer = new Xlsx($spreadsheet);
$sheetName = 'Test_00.00.0000.xlsx';
$writer->save($sheetName);
?>
 
Naja, das deutet auf fehlende Schreibrechte. Hat der WWW-Nutzer Schreibrechte auf den Ordner, wo die Datei hingeschrieben werden soll. Aktuell will er es in den Ordner packen, wo sich das Script befindet.
 
Zurück