Articles of php fpm

php-fpm是否可以为单个用户池的多个虚拟主机dynamic设置open_basedir?

我遇到了一个问题,试图在nginx(和apache)下为php-fpmdynamic地设置open_basedir,当运行php-fpm作为用户“nobody”(出于传统原因)时,其他虚拟主机正在“stream血”。 运用 fastcgi_param PHP_ADMIN_VALUE "open_basedir=/home/mike/htdocs"; 和 fastcgi_param PHP_ADMIN_VALUE "open_basedir=/home/adam/htdocs"; 等适用于每个虚拟主机(PHP 5.3.20) phpinfo显示正确的open_basedir被设置,但最终(相当快)我开始得到错误,其中一个虚拟主机将运行到错误的open_basedir,试图执行一个程序的“迈克”,但有open_basedir“亚当” 。 由于fastcgi_param只是基本上为php-fpm设置环境,我认为正在发生的事情是同一个worker会在处理php文件时改变它的环境。 不知何故服务器,如litespeed也使用fastcgi php进程(无人运行)得到这个权利,正确地工作与open_basedir可以设置外部没有“stream血”之间的虚拟主机。 所以我想知道是否有一个技巧或解决办法,我可以用来保持作为“无人”运行,并保持虚拟主机之间的环境。 我应该注意到我正在使用unix套接字,而不是TCP / IP,但我不认为这是有所作为。

使用Zend Optimizer +和php-fpm + nginx

注意:我以前在Zend Server中讨论过一个组件,但是现在是一个独立的模块,并且是开放源代码的 ,并且将与PHP 5.5捆绑在一起,它具有比广泛使用的APC更高的性能/可用性。 现在这里是我的问题,我似乎无法让Zend Optimizer +与我的codeigniter驱动(PHP框架)站点正常工作,我的debuggingconfiguration如下: zend_optimizerplus.enable=1 zend_optimizerplus.memory_consumption=128 zend_optimizerplus.interned_strings_buffer=8 zend_optimizerplus.max_accelerated_files=4000 zend_optimizerplus.revalidate_freq=10 zend_optimizerplus.fast_shutdown=1 zend_optimizerplus.enable_cli=1 zend_optimizerplus.optimization_level=0 zend_optimizerplus.error_log=/var/log/zendop.log 一旦ZO +被启用,我开始看到这样的php-fpm日志(但没有别的,没有segfault错误,在ZO +错误日志中没有条目): [13-Mar-2013 00:58:45] WARNING: [pool www] child 6734 exited with code 1 after 176.326628 seconds from start [13-Mar-2013 00:58:45] NOTICE: [pool www] child 6761 started 基本上PHP的工作进程被停止并重新启动。 所有页面似乎只是部分输出。 我打开php错误显示与error_reporting(E_ALL & ~E_NOTICE); 但仍然没有看到PHP本身的任何错误。 我能在Nginx日志中find的条目是: 2013/03/13 00:22:47 [error] 1761#0: *14 […]

如何获得nginx中的PHP_AUTH_USER和PHP_AUTH_PW?

我有一个Magento模块,要求$_SERVER['PHP_AUTH_USER']和$_SERVER['PHP_AUTH_PW']variables。 在其文档中,提出了以下针对apache设置: SetEnvIfNoCase Authorization "Basic ([a-z0-9=]+)" REMOTE_AUTHORIZATION=$ 但是我正在使用nginx 。 我可以在.conf文件中添加什么来支持这些variables?

在userdir中使用nginx运行Moodle(斜杠参数)

我将Moodle(moodle.org)从Apache主机移动到运行Nginx的Ubuntu 12.04 LTS主机。 主机设置的方式意味着它将运行不less域,其中每个域(或其他站点)将驻留在用户目录中。 我使用php5-fpm运行Nginx。 我发现在用户目录中运行php-fpm的configuration相当多,这一切都起作用。 然而,问题在于Moodle在PHP中大量使用了斜杠参数,导致许多url看起来像这样: /home/[user]/public_html/theme/image.php/standard/theme/1377637305/favicon 我正在运行这个Nginxconfiguration: server { #listen 80; ## listen for ipv4; this line is default and implied #listen [::]:80 default ipv6only=on; ## listen for ipv6 root /usr/share/nginx/www; index index.html index.htm index.php; # Make site accessible from http://localhost/ server_name localhost; location / { # First attempt to serve request as […]

通过ProxyPassMatch作为处理程序转发PHP请求,或者仅在文件存在时转发

我正在迁移我的服务器使用mod_proxy_fcgi和php-fpm而不是mod_php。 Apache能够将.php请求转发到fcgi代理,PHP正确执行。 我有这个工作: ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1 不幸的是,即使文件不存在,Apache也会将所有.php请求转发给代理。 这导致一些问题。 我的ErrorDocument规则不会被调用,而DirectoryIndex index.php index.html不会退回到index.html。 我能用mod_rewrite修复这些问题: RewriteEngine On RewriteCond %{REQUEST_FILENAME} ^/((.*\.php)(/.*)?)$ RewriteCond /var/www/html/%2 -f RewriteRule . fcgi://127.0.0.1:9000/var/www/html/%1 [P] 但是,Apache文档不build议使用RewriteRule :“这是因为这个标志触发了使用默认的worker,它不处理连接池。 理想情况下,我想要在FileMatch块中使用ProxyPass(当前不支持),或者定义一个新的处理程序,通过fcgi代理并使用它来处理.php请求,类​​似于mod_php。 任何build议模拟标准的mod_php设置,但实际上通过fcgi代理?

重新启动ubuntu 14.04与主厨的php5-fpm

我有这个在我的厨师食谱: service 'php5-fpm' do supports :restart => true action [ :enable, :start ] end 然而,我的食谱现在Ubuntu 14.04中的barfs,因为“/etc/init.d/php5-fpm restart”在Ubuntu 14.04上不起作用(它返回1,并且没有消息)。 如何让我的厨师食谱重新启动和pipe理php5-fpm服务?

Apache fast-cgi和php-fpm无法运行php文件?

我一直试图将我的服务器从mod php切换到在osx(作为开发机器)上运行的apache服务器上设置的fastcgi。 我的问题是,PHP的FPM似乎并没有处理文件。 当我尝试访问这些页面时,Web服务器只是将它们作为下载传递给他们。 以前,它已经禁止我看到网页,并给我的网页作为纯文本。 我尝试用nginx设置服务器,并得到同样的问题。 我查看了Apache和php-fpm的错误日志。 apache错误日志: [Tue Jul 08 21:30:56 2014] [notice] FastCGI: process manager initialized (pid 1200) [Tue Jul 08 21:30:56 2014] [notice] Apache/2.2.26 (Unix) mod_fastcgi/2.4.6 DAV/2 mod_ssl/2.2.26 OpenSSL/0.9.8y mod_perl/2.0.7 Perl/v5.16.2 configured — resuming normal operations 和PHP的FMP [08-Jul-2014 21:33:49] NOTICE: [pool www] 'user' directive is ignored when FPM is not running as […]

nginx位置和优先级(拒绝* .php忽略)

我以前是一个有点经验的阿帕奇pipe理员,但是我决定冒险尝试学习nginx。 到目前为止,一切看起来相当直观,但很明显,我还没有完全内化nginx的做法,所以我相当肯定这是一个容易解决的问题,但我似乎无法find明显的答案。 我有一个服务器,它使用php-fpm服务器的PHP,我希望通过源IP(例如:phpmyadmin,我写的一些testing脚本等)限制访问我的文档根目录中的一些子目录。 无论出于何种原因,对于目录和文件的限制似乎都可以正常工作,但FastCGI服务器提供的PHP文件显然是绕过了这种访问限制。 我已经通过在限制目录中创build不同types的testing文件来validation这种情况。 文本和HTML文件确实被拒绝,并返回一个403,但PHP文件无论其内容似乎被parsing并提供给客户端。 这里是我认为是我的网站configuration的相关部分: # pass all PHP scripts to FastCGI server socket location ~ \.php$ { # Filter out arbitrary code execution location ~ \..*/.*\.php$ {return 404;} fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_pass unix:/var/run/php5-fpm.sock; } # allow access to tools pages as necessary location ~ /tools/ { allow 10.11.12.13/32; […]

PHP的FPM,位置嵌套与unnested避免代码执行

有什么优势使用: location ~ \.php { location ~ \..*/.*\.php$ { return 403; } fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; fastcgi_intercept_errors on; } 相比 location ~ \..*/.*\.php$ { return 403; } location ~ \.php { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; fastcgi_intercept_errors on; } 我想避免在这里显示的任意代码执行: […]

APC服务器caching碎片

我正在CentOS 5.5上运行一个包含APC和W3TC的Wordpress网站,这个网站每天获得大约10000次综合浏览量(包括ajax和WP-Admin)。 该服务器是一个低级别的VPS,最高可达376MB RAM。 最近我已经开始得到一些服务器崩溃,现在我可以将其归因于APC(我禁用了一小会儿,崩溃停止了)。 重新安装并查看APC图后,我可以看到我们在启动PHP-FPM后几秒钟就会出现很多碎片。 在某些情况下,几分钟后就会出现100%碎片。 目前的caching大小为40MB,由于服务器上的内存限制,我稍微犹豫要提高它。 我已经在2小时的时间内在caching上设置了一个ttl,但是考虑到发生碎片的数量,恐怕这可能太长了,但是如果我设置得太短,就会破坏caching的整个目的。 我也注意到,当设置userttl大于0时,当某些require / include / require_once / include_once函数被调用时,会出现大量错误。 任何帮助将不胜感激。