首页 > 解决方案 > 如何解决 nginx 和 php7.3-fpm 的缓冲问题

问题描述

我正在运行 nginx 1.10.3 和 php7.3-fpm。我需要使用给定目录中文件的文件名填充网页上的下拉列表。问题是 php 脚本中的“foreach”循环中的任何内容都不会输出到 Web 服务器。使用 php-cli 时一切正常。

我怀疑它与缓冲区没有被刷新有关,我已经尝试了我在网上可以找到的所有东西来尝试解决这个问题。任何帮助解决这个问题将不胜感激!!!

这是我用于测试的 index.php 文件:

<!doctype html>

<html lang="en-us">>
<head>
<meta charset="UTF-8">
</head>
<body>

<h1>PHP drop-down list population test</h1>
<?php
header('X-Accel-Buffering: no');
header('Cache-Control: no-cache');
header('Content-Encoding: none');

$path = "/root/Music/";
$flist = glob($path . "*.wav");
echo("<form>\n");
echo("<select name=\"music\">\n");

foreach($flist as $fname) {
$info = pathinfo($fname);
$fn = $info['filename'];
if($idx == 0)
    echo("<option value=\"$fname\" selected>$fn</option>\n");
else
    echo("<option value=\"$fname\">$fn</option>\n");
$idx++;
}
ob_end_flush();
flush();

echo("</select>\n");
echo("</form>\n");
?>

</body>
</html>

下面是我使用 curl 得到的输出:

<!doctype html>

<html lang="en-us">>
<head>
<meta charset="UTF-8">
</head>
<body>

<h1>PHP drop-down list population test</h1>
<form>
<select name="music">
</select>
</form>

</body>
</html>

这是我期望得到的:

<!doctype html>

<html lang="en-us">>
<head>
<meta charset="UTF-8">
</head>
<body>

<h1>PHP drop-down list population test</h1>
<form>
<select name="music">
<option value="/root/Music/church-chime.wav" selected>church-chime</option>
<option value="/root/Music/dixie-horn.wav">dixie-horn</option>
<option value="/root/Music/evacuate-alarm.wav">evacuate-alarm</option>
</select>
</form>

</body>
</html>

标签: phpnginx

解决方案


lbu - 谢谢!它往往是最简单的事情可以让你撤消(Doh!)。问题确实是目录权限不足。

现在一切都已修复并正常工作。

我们可以考虑回答这个问题!


推荐阅读