-1

I have downloaded composer successfully and I am trying to use the phpospreadsheet library but I keep getting these errors although this is a basic code. it works on windows but not on linux. Code Sample:

   require 'vendor/autoload.php';
    
    use PhpOffice\PhpSpreadsheet\Spreadsheet;
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    
    $spreadsheet = new Spreadsheet();
    $sheet = $spreadsheet->getActiveSheet();
    $sheet->setCellValue('A1', 'Hello World !');
    
    $writer = new Xlsx($spreadsheet);
    $writer->save('hello world.xlsx');

Errors:

[Tue Oct 05 10:03:34.068348 2021] [php7:warn] [pid 18227] [client 80.247.20.85:62954] PHP Warning:  fopen(hello world.xlsx): failed to open stream: Permission denied in /var/www/html/yellow-group.com/public_html/portals/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/BaseWriter.php on line 111
[Tue Oct 05 10:03:34.074664 2021] [php7:error] [pid 18227] [client 80.247.20.85:62954] PHP Fatal error:  Uncaught PhpOffice\\PhpSpreadsheet\\Writer\\Exception: Could not open file "hello world.xlsx" for writing. in /var/www/html/yellow-group.com/public_html/portals/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/BaseWriter.php:113\nStack trace:\n#0 /var/www/html/yellow-group.com/public_html/portals/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx.php(504): PhpOffice\\PhpSpreadsheet\\Writer\\BaseWriter->openFileHandle('hello world.xls...')\n#1 /var/www/html/yellow-group.com/public_html/portals/test.php(13): PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx->save('hello world.xls...')\n#2 {main}\n  thrown in /var/www/html/yellow-group.com/public_html/portals/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/BaseWriter.php on line 113
maja
  • 43
  • 8
  • What have you tried to resolve the problem? Where are you stuck? What makes you think that this is related to Composer, or to Apache? – Nico Haase Oct 05 '21 at 10:39
  • I would assume that this is a pure permission problem – Nico Haase Oct 05 '21 at 10:39
  • @NicoHaase how can i solve the permission problem?? or where can I look for help? – maja Oct 05 '21 at 11:41
  • I keep getting 'Operation not permitted' ... the folder 'Vendor' is set to root – maja Oct 05 '21 at 12:04
  • `Could not open file "hello world.xlsx" for writing` - what have you tried to resolve this? Which permissions did you set to allow that your application can write that file? – Nico Haase Oct 05 '21 at 12:30
  • very lazy answer: ```chmod -R 777 /path/to/your/php/directory``` – Kristian Oct 06 '21 at 09:31
  • I tried this and gave me permission but still no hope.. i have found the problem to be with anything to do with downloading files or writing on to files – maja Oct 07 '21 at 09:34

1 Answers1

1

the solution was to make a temporary directory. https://github.com/PHPOffice/PhpSpreadsheet/issues/1123

<?php
    
    require 'vendor/autoload.php';
    
    use PhpOffice\PhpSpreadsheet\Spreadsheet;
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    
    $spreadsheet = new Spreadsheet();
    $sheet = $spreadsheet->getActiveSheet();
    $sheet->setCellValue('A1', 'Hello World !');
    
    $writer = new Xlsx($spreadsheet);
    $path='temp/helloworld.xlsx';
    
    $writer->save($path);
maja
  • 43
  • 8