5

我的应用程序(有时)没有加载视图时遇到了一些问题。我正在使用 php-fpm 和 nginx(php5.6.8 和 nginx 1.8.0)运行 Debian 服务器,两者都是从源代码编译的。最重要的是,我正在运行 Lavavel 4.2。

到目前为止,我在 Chrome 和 Firefox 中都遇到了问题(chrome 只是停止加载并显示错误,firefox 不显示错误但显示视图的不完整版本)。

到目前为止,我已经检查了 nginx 和 PHP 的权限,它们都以同一个用户 (www-data:www-data) 运行。我的 php-fpm 套接字配置为:

[sitename]

listen = /var/run/php5-fpm/sitename.sock
listen.backlog = -1
listen.owner = www-data
listen.group = www-data
listen.mode=0660

; Unix user/group of processes
user = folderuser
group = www-data

; Choose how the process manager will control the number of child processes.
pm = dynamic
pm.max_children = 75
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500

; Pass environment variables
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

请注意,我将用户设置为文件夹用户,因为站点文件所在的文件夹归文件夹用户所有(文件夹用户:www-data)。此外,laravel文件夹内的权限配置为755(775用于缓存和上传文件夹,以便www-data可以写入缓存文件)

我已禁用任何类型的服务器端 php 缓存(zend opcache 除外)。

我还尝试在 chrome 中禁用“预取资源以更快地加载页面”功能,但这并没有解决问题。

作为最后的手段,我尝试了这个解决方案:

/*
|--------------------------------------------------------------------------
| Fix for Chrome / PHP 5.4 issue
| http://laravel.io/forum/02-08-2014-another-problem-only-with-chrome
|--------------------------------------------------------------------------
*/

App::after(function($request, $response)
{

    $content = $response->getContent();

    $contentLength = strlen($content);

    $response->header('Content-Length', $contentLength);

});

还有这个脚本的一些变体,但我得到了一些内容长度不匹配(比net::ERR_INCOMPLETE_CHUNKED_ENCODING错误更常见)。

总而言之,我检查了服务器端的权限和用户/组设置,我禁用了服务器端缓存(zend 除外),我弄乱了 chrome 设置,我尝试了 laravel 的脚本,没有一个解决了我遇到的问题。请注意,该问题在网站上的随机页面上以随机间隔发生。

我真的不知道解决我的问题的下一步是什么,因为上面的解决方案是我在互联网上找到的唯一解决方案。

我真的很感激一些帮助。

编辑:我有一个相同应用程序的测试版在另一台具有完全相同配置的服务器上运行(唯一的区别在于硬件,但更多的内存),问题不存在。

另外,我忘了提到该应用程序不使用 HTTPS 运行(当前)。然而,测试版使用 HTTPS 运行。

编辑存在问题的服务器有 2048 MB RAM,测试版服务器有 8192 MB RAM。

编辑当错误发生时,我用提琴手检查了响应,它只是在某个时候无缘无故地切断了响应。

4

3 回答 3

14

您可能想检查该文件夹/var/lib/nginx是否也归其所有www-data。我遇到了这个问题,当响应页面太大时,Nginx 工作进程试图使用这个文件夹并失败了,因为它归所有nginx并且工作进程在www-data. 通过这样做chown -R www-data:www-data /var/lib/nginx,问题得到了解决。

于 2015-09-29T19:24:02.227 回答
1

如果将来有人发现这个,我net::ERR_INCOMPLETE_CHUNKED_ENCODING是因为空间不足。看看你的磁盘使用情况,看看是不是这个原因!

于 2021-06-15T11:07:08.777 回答
0

我在最新的 Debian 上运行的 Nginx 服务器上看到了类似的问题。我正在运行一个安装了高级自定义字段的 Wordpress 站点。在高级自定义字段中,它表示问题可能与 php.ini 文件中的 max_input_vars 值有关。我将我的价值从 1000 增加到 3000,这解决了我的一个网站上的问题。

您可以查看此链接,看看它是否对您有帮助。http://www.advancedcustomfields.com/faq/limit-number-fields/

于 2015-09-11T17:24:06.910 回答