【问题标题】:phpspreadsheets/ phpoffice not working on linuxphpspreadsheet/phpoffice 无法在 Linux 上运行
【发布时间】:2021-11-25 13:48:21
【问题描述】:

我已成功下载作曲家,我正在尝试使用 phpospreadsheet 库,但我不断收到这些错误,尽管这是一个基本代码。它适用于Windows,但不适用于Linux。 代码示例:

   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');

错误:

[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

【问题讨论】:

  • 您尝试过什么解决问题的方法?你被困在哪里了?是什么让您认为这与 Composer 或 Apache 有关?
  • 我认为这是一个纯粹的权限问题
  • @NicoHaase 如何解决权限问题?或者我可以在哪里寻求帮助?
  • 我不断收到“不允许操作”...文件夹“供应商”设置为 root
  • Could not open file "hello world.xlsx" for writing - 你有什么办法解决这个问题?您设置了哪些权限以允许您的应用程序可以写入该文件?

标签: linux composer-php apache2 phpspreadsheet php-7.2


【解决方案1】:

解决方案是创建一个临时目录。 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);

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 1970-01-01
    • 2018-06-15
    • 2021-04-01
    • 2019-07-30
    • 2020-02-24
    • 2012-06-08
    • 2017-08-20
    • 2014-04-08
    相关资源
    最近更新 更多