gpt4 book ai didi

javascript - 如何从单独的 php 脚本执行 php 脚本而不丢失第二个脚本的输出?

转载 作者:行者123 更新时间:2023-12-03 06:48:48 25 4
gpt4 key购买 nike

我目前正在开发一个项目,该项目使用 HTML 和 PHP 允许用户在 Web 表单中输入信息以生成 Excel 文件。提交后,表单运行一个 PHP 文件 main.php:

<?php
// output headers so that the file is downloaded rather than displayed
$order = $_POST["order"];
header('Content-Type: text/plain; charset=utf-8');
header('Content-Disposition: attachment; filename="'.$_POST['order'].'.xls"');
exec('php xl.php');
sleep(2);
readfile('xl_template.xls');
error_reporting(E_ALL);
ini_set("display_errors", 1);
?>

其中“xl.php”是另一个 PHP 文件,“xl_template”是我想要修改的 Excel 工作表的模板。 main.php的目的是抓取修改后的模板并将其下载到用户计算机上,而xl.php实际上修改了Excel模板并将其保存到服务器计算机上(使用PHPExcel库):

<?php
// this file will be called by main.php
// after execution, there should be a newfile.xls
// for the main.php to read from
error_reporting(E_ALL);
require('Classes/PHPExcel.php');

// variable definitions
$template = "xl_template.xls";

$objPHPExcel = PHPExcel_IOFactory::load($template);
$objWorksheet = $objPHPExcel->getActiveSheet();
$objWorksheet->getCell('A2')->setValue('123400000000000000000001');
$objWorksheet->getCell('B2')->setValue('it worked!');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save($template);
?>

当从终端调用 xl.php 文件然后填写表单时,这将按预期工作。但是,当通过 exec('php xl.php') 从 main.php 调用 xl.php 时方法中,Excel 文件没有更新,我认为这意味着 xl.php 没有成功执行。

除了 exec() ,我试过system() , shell_exec 、反引号运算符和 passthru() ,结果相同。另外,我尝试过 Javascript 和 JQuery 方法,使用 $.get('xl.php') 调用 xl.php 文件。和$.ajax({url: 'xl.php'})运气不好。

任何对此问题的见解都将不胜感激,因为我对使用 PHP 仍然很陌生。谢谢。

最佳答案

我建议创建两个单独的函数并按照您需要的顺序调用它们,以防止发生错误。这是最有效的方法。

如果您确实想使用不同的页面,您可以使用 php 中的 header() 函数重定向到第二个 php 页面,并包含您需要在 URL 中传递的任何变量并使用 $_GET 检索它们()。

关于javascript - 如何从单独的 php 脚本执行 php 脚本而不丢失第二个脚本的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37596203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com