php - Apache 或 php.ini 配置以允许使用 phpspreadsheet 保存文件
问题描述
我一直在寻找信息、示例、文档……但我的搜索失败了,因为我没有找到任何解决问题的方法:我使用 XAMPP 通过 php 和 mysql 设计网页,然后将最终版本上传到我的服务器(这是为了执行功能测试)。我在 XAMPP 中实现了 phpspreadsheet 以生成 xlsx,它工作正常,并在指定的本地驱动器位置创建对应的 excel 文件。但是.....当我将文件上传到我的服务器时,除了生成 xlsx 外,一切正常,我的意思是:excel 文件没有保存到服务器。服务器和xampp都具有相同版本的php,mysql,phpspreadsheet,我已经将文件夹的权限更改为777,以便完全访问脚本以保存生成的预期文件,但是没有文件生成或保存到 php 脚本中指定的位置。我尝试过使用一个非常简单的测试 php 文件,它既不保存 excel 文件,也没有显示错误,而且显然所有指令都正确执行(xlsx 只是在服务器中没有生成,在 windows 中使用 xampp 可以完美地工作),我真的不知道是否有我想念的特殊配置,以允许 php 在 apache 保存文件。谢谢您的帮助。
测试 1:仅在 xampp 中工作正常,在服务器中它不会产生错误,但不会将文件保存在任何地方。
<?php
require_once('vendor/autoload.php');
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\IOFactory;
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load('template.xlsx');
$worksheet = $spreadsheet->getActiveSheet();
$worksheet->setCellValue('A1', 'Test text ok!!!');
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, "Xlsx");
$writer->save("test.xlsx");
?>
测试 2:在服务器和 xampp 上工作正常,但生成 excel 到 Internet Explorer 输出窗口,而不是将其保存到一个位置,没关系,但不是我需要的,我需要将文件存储(保存)在服务器中。
<?php
require_once('vendor/autoload.php');
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\IOFactory;
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load('template.xlsx');
$worksheet = $spreadsheet->getActiveSheet();
$worksheet->setCellValue('A1', 'Test text ok!!!');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="test.xlsx" ');
header('Cache-Control: max-age=0');
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, "Xlsx");
$writer->save('php://output');
?>
根据上面显示的示例,我可以声明:\PhpOffice\PhpSpreadsheet... 引用 Phpspreadsheet 的路径以及与指令和指令相关的路径在两种环境(xampp 和 lamp-server)中都可以正常工作,因为第二个示例有效,但是在第一个示例中,唯一不起作用的是 save() 函数。这就是为什么我认为该问题与 Phpspreadsheet 配置和/或 php 文件编码无关,而是与保存文件的 apache 或 php 权限有关。任何人都有一些想法,为什么脚本没有在我的服务器中保存任何内容?先感谢您
解决方案
推荐阅读
- magento - 404 错误:找不到页面。(Magento 2 全新安装 ubuntu 18)
- google-app-engine - 本地环境中的 gcloud、python 3、app.yaml 没有
- c++ - 控制台顶部的永久时钟
- c - visual c ++ winSock 连接到vps,vds服务器,客户端和服务器等待连接,如何修复?
- python - TypeError: Column() 得到了一个意外的关键字参数“primary_key”
- python - 有没有办法为使用 parser.add_option 创建的选项输入输入,而不为同一选项输入任何输入?
- powershell - 如何知道这个 powerShell 命令中的 0 是什么意思?get-counter -Counter "\Process(0)\% Processor Time"
- amazon-web-services - 无法执行 HTTP 请求:连接到 localhost:4583 以获取 SSM
- javascript - 使用推送从其他数组的值创建一个数组,而不创建二维数组(JavaScript)
- linux - 非root用户的内部容器容器文件权限问题