标签: php

Nginx + PHP-FPM = 502 错误网关

我刚刚启动了一个新的 Rackspace 云服务器并运行了以下命令:

apt-get install php5 nginx php-fpm
Run Code Online (Sandbox Code Playgroud)

当我导航到 IP 地址时,我会看到默认的 Nginx 消息。然后我/etc/nginx/sites-available/default从另一个工作设置复制了我的文件:

server {

  listen 80;
  server_name localhost;

  root /srv/www;
  index index.php;

  location / {
    try_files $uri $uri/ /controllers$uri.php;
    location ~ \.php$ {
      try_files $uri /index.php;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

我创建index.php的/srv/www,并开始nginx和php-fpm:

/etc/init.d/nginx start
/etc/init.d/php5-fpm start
Run Code Online (Sandbox Code Playgroud)

我收到 502 Bad Gateway 错误。难道我做错了什么?

php nginx php-fpm

5
推荐指数
2
解决办法
4万
查看次数

优化 VPS 服务器内存

我想做什么

服务器资源限制有时会很紧张;为了防止内存耗尽,我不得不限制服务器进程。我需要一点专家的帮助来知道我是否在正确的轨道上,并且可能会发现任何明显的设置更改,以帮助系统以更高的稳定性运行更多。

历史

最近我的公司从共享主机升级到了 VPS。基本上我们已经超出了我们的共享主机,并且由于周末 CPU 使用率过高,主机暂停了我们的网站,因此开始出现问题。我们的网站用户倾向于每周在周五和周六增加一倍或三倍,这在我们的案例中并不意外。(一周内每天约 5000 次访问 [~2500 名访客],周末约 9500 次访问 [~4500 名访客]。)

现在我们在 VPS 上,我们没有 CPU 问题。(事实上​​,CentOS WHM 控制面板说我们处于“.000201% CPU 负载”。)但是,我们遇到了内存不足问题,导致崩溃。

问题概要

我们的网站是基于 WordPress 的。然而,除了评论,几乎没有“写”活动;大多数用户只是看到我们创建的相当静态的页面。

几个月前,也就是 2012 年 10 月,当我们第一次升级到 VPS 时,该网站在一周内运行良好,但每个周末都被内存阻塞。通常它会反复崩溃(24 小时内有 5-20 次,偶尔发生),通常从周五晚上开始,一直持续到周六下午。

在一周内,服务器始终以 65-90% 的内存使用率运行,而在周末它会达到 100%,从而导致崩溃。

采取的纠正措施

由于我是 VPS 的新手,所以我从所有默认设置开始。后来我开始调整,遵循我在本网站和其他网站上阅读的有关解决内存问题的建议。

我对 MySQL、PHP 和 Apache 进行了调整,在“当前配置”中总结如下。我还重新编译了 Apache 和 PHP 以删除不需要的模块。我为 WordPress (W3T) 安装了一个更好的缓存插件,并添加了 APC 操作码缓存。我也开始使用 gz 压缩,并将大量静态文件移动到单独的子域。

我编写了一个漂亮的小脚本来按计划检查服务器状态,并根据需要重新启动它,它还向我发送了服务器错误日志的副本,以帮助进行故障排除。(我知道,如果那样的话,这只是创可贴。但保持网站在线很重要,因为没有人愿意在周末坐下来监视它。)

就在最近,大约一周前(2013 年 1 月),我将服务器 RAM 从 1 GB(2 GB 突发)升级到 2 GB(3 GB 突发)。这似乎解决了大部分问题,但我仍然偶尔会收到服务器挂起的通知(大约一周一次),以及“无法应用进程槽”PHP 错误。

当前配置

它是一个 …

mysql php optimization memory apache-2.2

5
推荐指数
1
解决办法
2993
查看次数

如何启用 pdo_mysql

我正在尝试安装SpaceBukkit。我想知道如何启用pdo_mysql. 尝试设置 MySQL 部分时,出现此错误:

The "pdo_mysql" extension is NOT loaded in your `php.ini`! 
Make sure to load it before continuing!
Run Code Online (Sandbox Code Playgroud)

这不是 cPanel 服务器,所以我只能依靠 ssh 和 ftp (sftp)。如果你们可以请告诉我,将不胜感激!

作为旁注,我使用的是 Centos 5。

mysql php pdo centos5

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

无法在 .htaccess 文件中设置 php_value

我正在尝试在我的 Apache2/PHP 服务器上设置 NewRelic,并让它报告每个虚拟主机的不同应用程序。为此,newrelic.appname必须更改php 值。它在默认情况下定义/etc/php.d/newrelic.ini为按虚拟主机报告,需要在该虚拟主机上专门设置,如下所述:https : //newrelic.com/docs/php/per-directory-settings

在我/etc/php.d/newrelic.ini的设置中:

newrelic.appname="PHP Application;MySite.com;"
Run Code Online (Sandbox Code Playgroud)

在我的虚拟主机中,我有以下配置:

<Directory "/">
    AllowOverride All
    php_value newrelic.appname "MySite.com"
</Directory>
Run Code Online (Sandbox Code Playgroud)

它是我的.htaccess:

php_value newrelic.appname 'MySite.com'
Run Code Online (Sandbox Code Playgroud)

但是phpinfo()从与.htaccess我得到的文件相同的目录中的文件中查看服务:

 Directive Name     Local/Active Value  Master/Default Value
 -----------------------------------------------------------
 newrelic.appname   PHP Application     PHP Application
Run Code Online (Sandbox Code Playgroud)

通过 spawn-fcgi 使用 FastCGI。

任何其他建议将不胜感激。

php fastcgi .htaccess spawn-fcgi apache-2.2

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

如何使用 nginx+PHP-FPM 启用 PHP 的flush()?

我正在使用带有 PHP-FPM 的 nginx(安装了 APC)。

我需要 PHPflush()才能工作。这可能吗?

到目前为止我尝试过的事情:

  • 禁用 中的所有输出缓冲php.ini以及输出压缩。
  • gzip在 nginx 的配置中禁用。
  • 将 nginx 的fastcgi_*缓冲设置设置fastcgi_max_temp_file_size为零。

我敢肯定我一定遗漏了一些东西,因为我在这里和其他地方遇到过很多帖子,人们声称他们已经让它工作了,但我似乎没有运气。

php nginx php-fpm

5
推荐指数
1
解决办法
9935
查看次数

我真的需要 PHP maxlifetime 每小时 cron 作业吗?

在我的 Debian Wheezy 上,每半小时运行一次 cron 作业:

find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -ignore_readdir_race -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
Run Code Online (Sandbox Code Playgroud)

这将删除旧的 PHP 状态/会话文件。我想完全放弃这个 cron 工作,或者至少降低它的频率。在以下哪个用例中是可能的?

  1. 没有运行 PHP 代码的服务器
  2. 一个带有 PHP 的奇怪页面的服务器,但没有像 CMS 那样严重
  3. 运行一些 PHP CMS 的服务器,具有用户会话,但页面浏览量不多(比如每月最多 50,000)

maintenance php frequency web-server cron

5
推荐指数
0
解决办法
9919
查看次数

PHP-FPM 不显示在 phpinfo()

我已经使用本手册在 Centos + Apache 上安装了 php-fpm - http://www.howtoforge.com/using-php5-fpm-with-apache2-on-centos-6.2-p2但 PHP-FPM 未显示在 phpinfo 中()。我不知道为什么。在此处输入图片说明

PHP-FPM 进程已安装并运行良好:

# service php-fpm status
php-fpm (pid  13349) is running...
# service php-fpm configtest
[29-Apr-2013 14:17:34] NOTICE: configuration file /etc/php-fpm.conf test is successful
Run Code Online (Sandbox Code Playgroud)

我的/etc/php-fpm.conf:

;;;;;;;;;;;;;;;;;;;;;
; FPM Configuration ;
;;;;;;;;;;;;;;;;;;;;;

; All relative paths in this configuration file are relative to PHP's install
; prefix.

; Include one or more files. If glob(3) exists, it is used to include a bunch of
; files …
Run Code Online (Sandbox Code Playgroud)

php centos fastcgi php-fpm apache-2.2

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

Ubuntu 安装 php5-ffmpeg

当我尝试安装 php5-ffmpeg 时:

apt-get install php5-ffmpeg
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

The following packages have unmet dependencies:
 php5-ffmpeg : Depends: phpapi-20090626+lfs
Run Code Online (Sandbox Code Playgroud)

据我了解,当我将 php 从 5.3 升级到 5.4 时,我的 php5-ffmpeg 损坏了。

我该如何解决?我尝试了一些选项,如 -f、-ingnore-dependencies 但这并没有解决它。

我正在使用 Ubuntu 12.04.2 LTS。

linux ubuntu php ffmpeg php5

5
推荐指数
1
解决办法
8915
查看次数

已安装 Amazon Linux pecl_http 但未提供功能

我已经pecl_http使用 Amazon Linux php54-pecl-httpYum 包安装了 PHP 的扩展。

  • php -i显示http.ini加载的文件
  • http.ini里面有这extension=http.so条线
  • php -m 显示已安装的 HTTP 模块
  • pecl list显示pecl_http 2.0.0beta1为已安装。

然而,当我尝试使用它的函数- new HttpRequest(),http_build_url()等-他们回来是不存在的。我在 CLI 上运行所有内容(这是一个实用程序服务器),因此php.ini环境之间没有机会出现不同的文件。

php -i的 http 块指出:

http

HTTP Support => enabled
Extension Version => 2.0.0beta1

Used Library => Compiled => Linked
libz => 1.2.5 => 1.2.5
libcurl => 7.24.0 => 7.24.0
libevent => 1.4 or greater => 2.0.18-stable
libserf => disabled …
Run Code Online (Sandbox Code Playgroud)

php pecl amazon-ami

5
推荐指数
1
解决办法
965
查看次数

Nginx 中的不同 PHP 配置

我有一个 web 服务器运行多个服务器(虚拟主机),使用 nginx 和 fastcgi 传递给 unix-socket。

我想要完成的是使用 beta.example.com 和 live.example.com 进行设置,其中实时站点的 error_reporting 已关闭(但仍记录到文件),而 beta 站点的 error_reporting 已打开。

因此,对于 Apache,我会在以下方面做一些事情:

<VirtualHost *:80>
    ServerName beta.example.com

    [...]

    php_flag display_errors on
    php_flag display_startup_errors on
    php_value error_reporting -1

    [...]
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

在谷歌搜索时,我没有找到任何可以使用 fastcgi 将此类参数传递给 PHP 的地方。有谁知道如何做到这一点?

现在的配置是(简化):

server {
    server_name beta.example.com;
    [...]
    fastcgi_pass unix:/var/run/nginx/php-fastcgi.sock;
    fastcgi_index index.php;
}
Run Code Online (Sandbox Code Playgroud)

php nginx fastcgi php.ini

5
推荐指数
1
解决办法
5012
查看次数