php - PHP 脚本中的函数导致 502 Bad Gateway 错误

标签 php phpstorm bad-gateway

我的脚本中有一个函数在通过 PHPStorm 运行时突然导致 502 Bad Gateway 错误。我以前从未遇到过类似的脚本。当我注释掉它时,我根本没有任何错误。这怎么可能?

该脚本从一个 Excel 中获取信息并将其转换为另一个 Excel。

public static function WJ_JewelsToExcel($array, $fileName) {
    $objPHPExcel = new PHPExcel();
    $objPHPExcel->setActiveSheetIndex(0);
    $rowCount = 2;

    foreach ($array as $row) {
        $sku = $row[0];
        $gender = $row[1];
        $jewelType = $row[2];
        $jewelType2 = $row[3];
        $metalType = $row[4];
        $metalColor = $row[5];
        $gemType = $row[6];
        $gemColor = $row[7];
        $description = $row[9];
        $brand = $row[10];
        $msrp = $row[11];
        $price = $row[12];
        $qty = $row[13];
        $url = $row[14];
        $name = $brand . ' ' . $sku;
        $finalGender = "";

        if ($gender == "Female") {
            $finalGender = "Women's";
        } elseif ($gender == "Male") {
            $finalGender = "Men's";
        } else {
            $finalGender = "Child";
        }
        for($categoryRow = 0 ; $categoryRow < 2 ; $categoryRow++){
            if($categoryRow == 0){
                $objPHPExcel->getActiveSheet()->setCellValue('A' . $rowCount, $sku);
                $objPHPExcel->getActiveSheet()->setCellValue('C' . $rowCount, "Jewels");
                $objPHPExcel->getActiveSheet()->setCellValue('D' . $rowCount, "simple");
                $objPHPExcel->getActiveSheet()->setCellValue('E' . $rowCount, "Jewelry/" . $finalGender . "/" . $jewelType);
                $objPHPExcel->getActiveSheet()->setCellValue('F' . $rowCount, "Default Category");
                $objPHPExcel->getActiveSheet()->setCellValue('G' . $rowCount, "base");
                $objPHPExcel->getActiveSheet()->setCellValue('K' . $rowCount, $brand);
                $objPHPExcel->getActiveSheet()->setCellValue('W' . $rowCount, $description);
                $objPHPExcel->getActiveSheet()->setCellValue('AA' . $rowCount, "No");
                $objPHPExcel->getActiveSheet()->setCellValue('AC' . $rowCount, $gemColor);
                $objPHPExcel->getActiveSheet()->setCellValue('AD' . $rowCount, $gemType);

                switch ($finalGender){
                    case "Women's": $objPHPExcel->getActiveSheet()->setCellValue('AE' . $rowCount, "Women");break;
                    case "Men's": $objPHPExcel->getActiveSheet()->setCellValue('AE' . $rowCount, "Men");break;
                    default: $objPHPExcel->getActiveSheet()->setCellValue('AE' . $rowCount, "Child");
                }

                $objPHPExcel->getActiveSheet()->setCellValue('AG' . $rowCount, "0");
                $objPHPExcel->getActiveSheet()->setCellValue('AK' . $rowCount, $jewelType2);
                $objPHPExcel->getActiveSheet()->setCellValue('AN' . $rowCount, $metalColor);
                $objPHPExcel->getActiveSheet()->setCellValue('AO' . $rowCount, $metalType);
                $objPHPExcel->getActiveSheet()->setCellValue('AU' . $rowCount, $msrp);
                $objPHPExcel->getActiveSheet()->setCellValue('AV' . $rowCount, "Use config");
                $objPHPExcel->getActiveSheet()->setCellValue('AW' . $rowCount, "Use config");
                $objPHPExcel->getActiveSheet()->setCellValue('AX' . $rowCount, $name);
                $objPHPExcel->getActiveSheet()->setCellValue('BB' . $rowCount, "Product Info Column");
                $objPHPExcel->getActiveSheet()->setCellValue('BD' . $rowCount, $price);
                $objPHPExcel->getActiveSheet()->setCellValue('BE' . $rowCount, "0");
                $objPHPExcel->getActiveSheet()->setCellValue('BH' . $rowCount, $description);
                $objPHPExcel->getActiveSheet()->setCellValue('BN' . $rowCount, "1");
                $objPHPExcel->getActiveSheet()->setCellValue('BO' . $rowCount, "0");
                $objPHPExcel->getActiveSheet()->setCellValue('BU' . $rowCount, "4");
                $objPHPExcel->getActiveSheet()->setCellValue('BY' . $rowCount, $qty);
                $objPHPExcel->getActiveSheet()->setCellValue('BZ' . $rowCount, "0");
                $objPHPExcel->getActiveSheet()->setCellValue('CA' . $rowCount, "1");
                $objPHPExcel->getActiveSheet()->setCellValue('CB' . $rowCount, "0");
                $objPHPExcel->getActiveSheet()->setCellValue('CC' . $rowCount, "0");
                $objPHPExcel->getActiveSheet()->setCellValue('CD' . $rowCount, "1");
                $objPHPExcel->getActiveSheet()->setCellValue('CE' . $rowCount, "1");
                $objPHPExcel->getActiveSheet()->setCellValue('CF' . $rowCount, "1");
                $objPHPExcel->getActiveSheet()->setCellValue('CG' . $rowCount, "0");
                $objPHPExcel->getActiveSheet()->setCellValue('CH' . $rowCount, "1");
                $objPHPExcel->getActiveSheet()->setCellValue('CI' . $rowCount, "1");
                $objPHPExcel->getActiveSheet()->setCellValue('CK' . $rowCount, "1");
                $objPHPExcel->getActiveSheet()->setCellValue('CL' . $rowCount, "0");
                $objPHPExcel->getActiveSheet()->setCellValue('CM' . $rowCount, "1");
                $objPHPExcel->getActiveSheet()->setCellValue('CN' . $rowCount, "0");
                $objPHPExcel->getActiveSheet()->setCellValue('CO' . $rowCount, "1");
                $objPHPExcel->getActiveSheet()->setCellValue('CP' . $rowCount, "0");
                $objPHPExcel->getActiveSheet()->setCellValue('CQ' . $rowCount, "1");
                $objPHPExcel->getActiveSheet()->setCellValue('CR' . $rowCount, "0");
                $objPHPExcel->getActiveSheet()->setCellValue('CS' . $rowCount, "0");
            }

            if($categoryRow == 1){
                $objPHPExcel->getActiveSheet()->setCellValue('E' . $rowCount, "Brands/" . $brand);
                $objPHPExcel->getActiveSheet()->setCellValue('F' . $rowCount, "Default Category");
            }
            $rowCount++;
        }
    }
    $objWriter = new PHPExcel_Writer_CSV($objPHPExcel);
    $objWriter->save('D:\Websites\Utilities\PHPUtils\Export\\' . $fileName);
}

上面是导致错误的脚本,它是从主程序调用的。

require_once(__DIR__ . './PHPExcel/ExcelUtil.php');
require_once(__DIR__ . './SOAP/SoapUtil.php');

$data = ExcelUtil::ExcelToArray("WJ\\Jewels\\all_jewels.csv");
ExcelUtil::WJ_JewelsToExcel($data, "WJ\\Jewels\\all_jewels.csv");

PHP 和解释器配置正确。

最佳答案

好吧,这实际上既不是我的脚本,也不是 PHP,而是我试图转换的实际 EXCEL 文件。保存原始 CSV 文件时出现问题,它删除了所有逗号,因此它是 +500.000 个字符的长字符串,猜测网络服务器在解析它时遇到问题,因为它太长了。

问题已解决,CSV 文件有问题!

关于php - PHP 脚本中的函数导致 502 Bad Gateway 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41101375/

相关文章:

javascript - 提交表单后在同一页面中显示消息

php - PHP Built-in Webserver 有内存限制吗?

nginx - CentOS 上的 502 错误网关 mvc 核心应用程序

nginx - 服务器域返回 502 Bad Gateway - Nginx

php - 在 PHP 中从 HTTP 切换到 HTTPS 时 session 丢失

php - jQuery 使用延迟加载插件从外部文件加载图像

正则表达式在 PhpStorm/Webstorm (Intellij-IDEA) 中用小写字母替换大写字母

php - 如何在 PhpStorm 包含路径中包含部分 PHAR

docker - 502 错误网关 Nginx 反向代理

php - 如何从自动建议字段中提取值然后从数据库中选择全部?