标签: fpm

Docker:unixodbc.h 没有这样的文件或目录。已安装 unixodbc-dev 时出现“pecl install sqlsrv”错误

直到几天前,这一直在进行。我们正在使用以下代码构建一个 docker 容器,但这是尝试“pecl install sqlsrv”时发生的错误。尝试从该容器中的 PHP 连接到 mssql 服务器。有比我聪明的人有什么想法吗?

泊坞窗文件:

FROM  --platform=linux/amd64 php:8.0-fpm

RUN apt-get update && apt-get -y install nano apt-utils libxml2-dev gnupg \
    && apt-get install -y zlib1g-dev \
    && apt-get install -y libzip-dev \
    && docker-php-ext-install zip 

RUN apt-get -y install libicu-dev gcc g++ make autoconf libc-dev pkg-config libssl-dev apt-transport-https libgss3 

# Install MS ODBC Driver for SQL Server
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
    && curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list \
    && apt-get update

# …
Run Code Online (Sandbox Code Playgroud)

php sql-server docker sqlsrv fpm

27
推荐指数
3
解决办法
4764
查看次数

apache + php-fpm随机403错误

在我的服务器上运行Ubuntu 14.04.5与Apache 2.4.23和php-fpm 7.0.11,我得到随机的403错误.

我说"随机",因为我在使用403的日志中看到的页面在我尝试时运行正常.另外,我直接体验过(我的意思是通过我的浏览器访问服务器上的站点)我得到403错误,然后重试(只是刷新),我得到了200.

服务器运行一些网站(大约十几个),有各种解决方案(一些Wordpress,一些旧的意大利面条php应用程序,主要是基于Symfony框架的现代应用程序).

如果有人能指出我某些方法来增加某些日志的详细程度,我也会很高兴尝试自己解决这个问题.目前我在vhosts的apache日志中看到403错误.

php apache http-status-code-403 fpm

22
推荐指数
1
解决办法
1211
查看次数

如何确定php-fpm的当前配置?

我想确定当前配置为'已加载'.这些将是此处列出的所有值:http://php.net/manual/en/install.fpm.configuration.php

这些值不会返回phpinfo().

php fpm

18
推荐指数
3
解决办法
3140
查看次数

使用traefik和php fpm进行网关超时

我有一个设置mailcow与traefik的问题,我遇到网关超时.我也有nextcloud的这个问题,所以我真的很感兴趣,是什么导致网关超时这些问题.

我想这与端口9000和php-fpm上游或者某事有关.

但我想知道,以及如何处理它.

我的traefik.toml:

debug = true
checkNewVersion = true
defaultEntryPoints = ["http", "https"]

[web]
address = ":8080"
[web.auth.basic]
users = ["admin:undecipherablestring"]

[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
      entryPoint = "https"
  [entryPoints.https]
  address = ":443"
    [entryPoints.https.tls]

[acme]
email = "email@address.com"
storage = "acme.json"
entryPoint = "https"
onHostRule = true

[[acme.domains]]
  main = "main.com"
  sans = ["monitor.main.com", "ports.main.com", "git.main.com", "cloud.main.com", "mail.main.com"]
Run Code Online (Sandbox Code Playgroud)

我的traefik docker-compose.yml:

version: '2'
services:
  proxy:
    image: traefik
    container_name: traefik
    restart: always
    command: |- 
      --docker 
      --docker.domain=docker.localhost 
      --logLevel=DEBUG …
Run Code Online (Sandbox Code Playgroud)

fpm traefik nextcloud

16
推荐指数
1
解决办法
6405
查看次数

在一个dockerfile中将PHP-fpm与nginx结合

我需要将php-fpm与nginx结合在一个dockerfile中进行生产部署。

所以更好:

(1)使用php:7.1.8-fpm启动dockerfile,然后在其上面安装nginx图像层?

(2)还是建议使用Nginx映像,然后使用apt-get安装php-fpm?

PS:我没有用于生产部署的docker-compose构建选项。在我的开发环境中,我已经使用docker-compose并从两个映像轻松构建多容器应用程序。我们的组织开发人员不支持针对产品环境的基于docker-compose的部署。

php nginx docker dockerfile fpm

12
推荐指数
2
解决办法
6031
查看次数

Nginx + Php-fpm fastcgi 上游超时

我在长时间运行的 PHP 脚本时遇到问题:

<?php
sleep(70); # extend 60s
phpinfo();
Run Code Online (Sandbox Code Playgroud)

每次504 Gateway Time-outNginx 响应 60 秒后都会终止。

当我检查 Nginx 错误时,我可以看到请求超时:

... [error] 1312#1312: *2023 upstream timed out (110: Connection timed out) while reading response header from upstream, ... , upstream: "fastcgi://unix:/run/php/php7.0-fpm.sock", ...
Run Code Online (Sandbox Code Playgroud)

/etc/nginx/conf.d/timeout.conf我浏览了相关问题并尝试增加创建包含以下内容的文件的超时:

proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
fastcgi_read_timeout 600;
fastcgi_send_timeout 600;
fastcgi_connect_timeout 600;
Run Code Online (Sandbox Code Playgroud)

我还阅读了fastcgi核心模块的 Nginx 文档,搜索默认设置为 60 秒的任何配置。

我排除了client_*超时,因为它们返回HTTP 408而不是HTTP 504响应。

这是 FastCGI 的 Nginx 服务器配置部分: …

php timeout fastcgi nginx fpm

9
推荐指数
1
解决办法
3万
查看次数

php-fpm 在 osx 上获取其配置值的位置

我正在尝试在我的 osx 上运行 php-fpm:

php-fpm -t
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

[30-Dec-2017 13:36:12] ERROR: failed to open error_log (/usr/var/log/php-fpm.log): No such file or directory (2)
[30-Dec-2017 13:36:12] ERROR: failed to post process the configuration
[30-Dec-2017 13:36:12] ERROR: FPM initialization failed
Run Code Online (Sandbox Code Playgroud)

我没有那个文件也不能创建它 - 即使使用 sudo:

$:/usr $ sudo mkdir var
Password:
mkdir: var: Operation not permitted
Run Code Online (Sandbox Code Playgroud)

所以我的下一个大动作是在php-fpm配置中找到这个日志文件目录设置的确切位置(以便我可以决定日志文件应该去哪里)..似乎有很多配置文件,所以我参考了这个问题在找到我的 php-fpm 配置文件的位置。所以在我的php -i文件的输出中,我有这个:

'--sysconfdir=/usr/local/etc/php/7.1'
Run Code Online (Sandbox Code Playgroud)

我有以下文件:

php-fpm.conf

// can't be coming from this file
// b/c this is telling me it's /usr/local/var/log/php-fpm.log

; …
Run Code Online (Sandbox Code Playgroud)

php macos homebrew fpm

8
推荐指数
1
解决办法
7264
查看次数

重新启动php-fpm主进程后执行PHP脚本

说我有一个脚本,用于在重新启动PHP时填充PHP APC缓存,该缓存为空。

启动主php-fpm进程时,是否可以创建一种机制来自动运行某种脚本?

php caching server fpm

8
推荐指数
1
解决办法
117
查看次数

带有 /ping 路由的 php-fpm 容器 livenessProbe

最近我们遇到了一些问题,我们的 php-fpm 进程失控并导致站点无响应。有一些明显的 php-fpm 配置工具需要完成,但我还想为 php-fpm 容器实现合理的 livenessProbe 健康检查,当探测失败时,它将重新启动容器。

我已经挖掘了一些关于如何ping 服务器作为健康检查的资源(例如https://easyengine.io/tutorials/php/fpm-status-page/),但我还没有找到关于什么的好答案需要注意。如果服务器实际上已死,/ping 路由是否会返回“pong”以外的其他内容?它会超时吗?假设是后者,合理的超时限制是多少?

运行我自己的一些测试,我注意到一个健康的 php-fpm 服务器将快速返回“pong”响应:

# time curl localhost/ping
pong
real    0m0.040s
user    0m0.006s
sys 0m0.001s
Run Code Online (Sandbox Code Playgroud)

我模拟了重负载,确实需要 1-3 秒的“乒乓”响应时间,而这恰逢站点变得无响应。基于此,我草拟了一个 livenessProbe 的草稿,如果 liveness 探针脚本在 2 个连续的探针上花费的时间超过 2 秒,它将失败并重新启动容器:

livenessProbe:
  exec:
    command:
    - sh
    - -c
    - timeout 2 /var/www/livenessprobe.sh
  initialDelaySeconds: 15
  periodSeconds: 3
  successThreshold: 1
  failureThreshold: 2
Run Code Online (Sandbox Code Playgroud)

探针脚本就是这样(有一些原因,为什么这需要是一个 shell 脚本,而不是来自 livenessProbe 的直接 httpGet,我不会进入):

  #!/bin/bash

  curl -s localhost/ping
Run Code Online (Sandbox Code Playgroud)

现在我不知道是我太激进还是太保守了。我将运行金丝雀部署来测试这一点,但与此同时,我想从其他人那里获得一些反馈,这些人已经在 php-fpm 服务器上实施了健康检查,如果它在 Kubernetes 上下文中,则可以获得奖励积分。

php kubernetes fpm

7
推荐指数
1
解决办法
3683
查看次数

运行比 CPU 核心数量更多的 PHP-FPM 子级是否有意义?

假设我有一个 4 核和 4 线程的 CPU,通过设置选项运行例如 8 个 PHP-FPM 工作程序是否有意义pm.max_children = 8?就我而言,具有 4 个线程的 CPU 最多只能“真正”并行运行 4 个进程。如果由于这 8 个进程之间的上下文切换而导致 CPU 时间损失,难道不会造成开销吗?

相比之下,Node.js 集群模式文档建议运行与核心数量一样多的工作进程/子进程。同样的建议不也适用于此吗?

php cpu operating-system scheduling fpm

7
推荐指数
2
解决办法
4273
查看次数