我正在尝试在我们服务器的子目录中设置 symfony2 应用程序
网络服务器:nginx 1.1.6 + php fpm 操作系统:gentoo
我的目标是让应用程序从子目录运行
subdomain.xy.domain.tld/工具
我的 nginx 配置看起来像这样
server {
listen 80;
server_name subdomain.xy.domain.tld;
error_log /var/log/nginx/subdomain.xy.error.log info;
access_log /var/log/nginx/subdomain.xy.access.log main;
location /tool {
root /var/www/vhosts/subdomain.xy/tool/web;
index app.php;
location ~ \.php($|/) {
include fastcgi_params;
set $script $uri;
set $path_info "";
if ($uri ~ "^(.+\.php)($|/)") {
set $script $1;
}
if ($uri ~ "^(.+\.php)(/.+)") {
set $script $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME /var/www/vhosts/subdomain.xy/tool/web$fastcgi_script_name;
#fastcgi_intercept_errors on;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_NAME $script;
fastcgi_param PATH_INFO $path_info;
} …Run Code Online (Sandbox Code Playgroud) 我将 nginx 与 php5-fpm 以及以下fastcgi_params文件一起使用:
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param HTTPS $https;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REDIRECT_STATUS 200;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
Run Code Online (Sandbox Code Playgroud)
我注意到该$_SERVER['HTTP_REFERER']变量未设置。我在 nginx wiki 中搜索了任何对 Referer 标头的引用,但找不到任何提及与 fastcgi 相关的问题的内容。 …
我有一些问题,我们的客户报告我们的一些网页速度很慢。这可能有多种原因,但我想专门记录每个页面的执行时间,而不必在每个 PHP 脚本的页眉和页脚中添加某些内容。有哪些选择?(如果有影响的话,我们正在运行 Nginx Web 服务器和 PHP-FPM)
让我们开始说我已经在 Remi 博客上阅读了这个、这个和这个,因为它与这些存储库相关的问题。博客条目根本没有帮助我,或者我在这里遗漏了一些东西,但我不确定是什么。我将在下面公开我遵循的步骤,让我们看看我做错了什么。我计划将 PHP 5.6.x 和 PHP 7.0 安装为 SCL(因为我需要在两者上测试一些应用程序,并且由于某些 Wordpress 开发,我需要保持 PHP 5.6.x 支持)并且我将通过 SetHandler 使用 Apache 2.4.x所以下面是步骤:
安装软件集合工具:
yum install scl-utils
Run Code Online (Sandbox Code Playgroud)为您的系统下载带有存储库的软件包(在本例中为 httpd24)
wget http://www.softwarecollections.org/en/scls/rhscl/httpd24/epel-6-x86_64/download/rhscl-httpd24-epel-6-x86_64.noarch.rpm
Run Code Online (Sandbox Code Playgroud)安装 repo 包:
yum install rhscl-httpd24-epel-6-x86_64.noarch.rpm
Run Code Online (Sandbox Code Playgroud)安装集合:
yum install httpd24
Run Code Online (Sandbox Code Playgroud)开始使用软件集合:
scl enable httpd24 bash
Run Code Online (Sandbox Code Playgroud)启动 httpd24 服务(默认选项)
service httpd24-httpd start
Run Code Online (Sandbox Code Playgroud)将 PHP56 安装为 SCL:
yum install php56 php56-php-common php56-php-cli php56-php-fpm php56-php-gd php56-php-intl php56-php-mbstring php56-php-mcrypt php56-php-opcache php56-php-pdo php56-php-pear php56-php-pecl-apcu php56-php-imagick php56-php-pecl-xdebug php56-php-pgsql php56-php-xml php56-php-mysqlnd php56-php-pecl-jsonc php56-php-pecl-zip php56-php-process …Run Code Online (Sandbox Code Playgroud)服务器启动时访问服务器的原因是什么?
我已经rhc tail在我的应用程序上运行以监控新日志。
这是我的日志 http://laravel.io/bin/Dez4o
当我开始使用应用程序时 rhc app-start
app-root/logs/php-fpm-error.log
[26-Jul-2016 21:53:00] NOTICE: [pool www] 'user' directive is ignored
when FPM is not running as root
[26-Jul-2016 21:53:00] NOTICE: [pool www] 'group' directive is ignored
when FPM is not running as root
[26-Jul-2016 21:53:00] NOTICE: fpm is running, pid 33590
[26-Jul-2016 21:53:00] NOTICE: ready to handle connections
Run Code Online (Sandbox Code Playgroud)
app-root/logs/haproxy.log
[WARNING] 207/215259 (33493) : config : log format ignored for proxy 'stats' since it has no log address.
[WARNING] 207/215259 (33493) …Run Code Online (Sandbox Code Playgroud) 我已经根据本教程( https://wiki.apache.org/httpd/PHP-FPM )或多或少配置了一个网络服务器,但我无法让 PHP 工作。HTML 文件可以正常使用。我收到以下错误消息:
mod_authz_core.c(802): [client <myip>:36570] AH01626: authorization result of Require all denied: denied
mod_authz_core.c(802): [client <myip>:36570] AH01626: authorization result of <RequireAny>: denied
127.0.0.1 [client <myip>:36570] AH01630: client denied by server configuration: proxy:fcgi://127.0.0.1:9000/var/www/html/test.php
Run Code Online (Sandbox Code Playgroud)
这是我的 PHP 文件:
www@<server>:/var/www/html$ ls -l
-rw-rw---- 1 www www-data 26 Sep 6 09:14 test.php
Run Code Online (Sandbox Code Playgroud)
如您所见,该文件属于“www”。网络服务器和“php-fpm”作为“www-data”运行。
这是“apache.conf”的基本配置:
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride None
Require all …Run Code Online (Sandbox Code Playgroud) 我尝试了以下命令来检查单个 PHP-FPM 进程的平均内存使用情况
ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'
Run Code Online (Sandbox Code Playgroud)
我有一个错误 awk: cmd. line:1: fatal: division by zero attempted
而这个命令
total=0; for i in `ps -C php-fpm -o rss=`; do total=$(($total+$i)); done; echo "Memory usage: $total kb";
Memory usage: 0 kb
ps -ef | grep php
root 9435 1 0 11:42 ? 00:00:00 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)
somename+ 9438 9435 0 11:42 ? 00:00:00 php-fpm: pool somename-1
somename+ 9439 9435 …Run Code Online (Sandbox Code Playgroud) 我使用 Docker 镜像php:7.2-fpm-alpine作为基础镜像,使用以下命令安装 Imagick:
RUN apk add --update --no-cache autoconf g++ imagemagick-dev libtool make pcre-dev \
&& pecl install imagick \
&& docker-php-ext-enable imagick \
&& apk del autoconf g++ libtool make pcre-dev
Run Code Online (Sandbox Code Playgroud)
构建一切顺利,我有带有 Imagick 的 php7.2,但由于以下错误而无法使用:
UnableToOpenConfigureFile `coder.xml' @ warning/configure.c/GetConfigureOptions/714
Run Code Online (Sandbox Code Playgroud)
我试图解决这个问题两个小时。我尝试添加 XML 库但没有任何运气。有任何想法吗?
我有一个 AWS Lightsail 实例(1GB RAM 实例)运行一个相对较新的网站(即几乎没有流量)。它正在运行 nginx 和 PHP-FPM 7.3(也尝试过 7.2)和 MariaDB。所有这些都在 CentOS 7 下。
在 AWS 免费套餐下一切正常。我运行了一个 T2.micro EC2 实例和一个 T2.micro RDS 实例。Lightsail 有点……更敏感。为了使 Lightsail 正常工作,我将 PHP-FPM 切换为ondemand
ondemand - 启动时不创建子项。当新请求连接时,子节点将被分叉。
我必须这样做,否则 MariaDB 会随机崩溃。这似乎不会影响下面的问题。
Wordpress 管理面板停止正常工作,每个人都说要CONCATENATE_SCRIPTS关闭。这有效......主要是。帖子和模板的编辑器出现故障。没有人能够给我一个线索为什么。环顾四周,我自己发现了一些东西。
不工作的页面没有完全加载。随着CONCATENATE_SCRIPTS上,CSS文件被加载在一个巨大的页面。因为这无法完全渲染,所以浏览器会忽略 CSS 和 JS 文件。CONCATENATE_SCRIPTS通过简单地将它们拆分为更小且易于加载的组件文件来解决这个问题。但是编辑页面无法拆分,调试底层问题一直让人抓狂。我收到 200 响应和一些数据
但是页面绘制不完整。我想说也许 80-90% 的 HTML 都在那里,但被切断了。在从这里开始的部分(JS 块)
wp.apiFetch.use( wp.apiFetch.createPreloadingMiddleware( {"\/":{"body":{"name":"S
Run Code Online (Sandbox Code Playgroud)
它只是突然结束,而且每次都在同一点。就好像 PHP-FPM 或 nginx 刚刚停止,但没有任何错误日志(关于这种类型的设置的大多数其他问题都是针对根本没有绘制的页面)。更奇怪的是,它不是在较小的页面上这样做,而是在非常长的页面上这样做。没有偷窃时间,top并且实例似乎没有承受任何严重的负载,所以我不确定它为什么会这样做。我重新加载了所有文件,甚至建立了一个单独的 WP 站点来测试这个,他们都这样做了。
根据评论,我打开了 nginx 调试日志记录并发现
2019/08/07 02:33:08 [crit] 1461#0: *47 open() "/var/lib/nginx/tmp/fastcgi/3/00/0000000003" failed …Run Code Online (Sandbox Code Playgroud) 我正在尝试更改 PHP-FPM 套接字文件的所有者/组。
我的www.conf包含:
[www]
...
listen = /run/php-fpm/www.sock
listen.owner = ben
listen.group = ben
listen.mode = 0660
Run Code Online (Sandbox Code Playgroud)
重新启动 php-fpm 后,www.sock仍然归root:root.
如果我更改套接字文件位置或listen.mode,套接字文件会相应更改。然而,listen.owner和listen.group似乎是公然无视。
这是为什么?
php-fpm ×10
nginx ×5
php ×5
apache-2.4 ×2
php7 ×2
centos6 ×1
docker ×1
gentoo ×1
haproxy ×1
http-headers ×1
imagemagick ×1
linux ×1
scl ×1
symfony ×1
wordpress ×1