我正在尝试configurationNginx在同一个域中的两个不同目录中托pipe多个基于PHP的应用程序。 我试图得到的结果是: http://webserver.local/ >应用程序从/path/to/website http://webserver.local/app >应用程序从/path/to/php-app 这是我的configuration。 当我点击http://webserver.local/时,一切正常(是PHP和非PHP资源)。 但是,当我转到http://webserver.local/app/index.php时,PHP脚本不工作。 我File Not Found (但是,文件在/path/to/php-app/index.php )。 我创build了一个文件/path/to/php-app/test.txt (不是PHP的东西),当我去http://webserver.local/app/test.txt时 ,我得到了预期的文本文件。 有人可以请说出我的错在哪里? 谢谢 :) server { listen 80; server_name webserver.local; location / { root /path/to/website; index index.php; location ~ \.php$ { root /path/to/website; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } location ^~ /app { alias […]
我刚把我的PHP版本从5.3.x升级到5.4.x,因为这样做 – 内存已经下降了很多! – 但是,我不断得到这些在我的php5-fpm.log: [18-Sep-2012 15:11:34] WARNING: [pool www] child 8981 exited on signal 11 (SIGSEGV – core dumped) after 65.813370 seconds from start [18-Sep-2012 15:11:34] NOTICE: [pool www] child 8988 started [18-Sep-2012 15:12:09] WARNING: [pool www] child 8988 exited on signal 11 (SIGSEGV – core dumped) after 35.185071 seconds from start [18-Sep-2012 15:12:09] […]
不久之后,我怎样才能在多个php-fpm池中包含相同的设置,而不必为每个池重复这些设置? 细节 在php5-fpm中有全局指令和每个池指令。 在所有示例和文档中,每个池都具有所有必需的设置,例如 [www] user = $pool group = $pool listen = 127.0.0.1:9001 listen.owner = $pool listen.group = $pool pm = ondemand pm.max_children = 5 pm.process_idle_timeout = 30s chdir = /var/www/$pool [www2] user = $pool group = $pool listen = 127.0.0.1:9002 listen.owner = $pool listen.group = $pool pm = ondemand pm.max_children = 5 pm.process_idle_timeout […]
我知道还有很多其他类似的问题,但是我觉得我已经有了这些问题的解决scheme。 我有3个站点在VirtualBox Ubuntu 12.04.4 LTS服务器上本地运行,我使用nginx和php-fpm。 它们被configuration为在端口9001 – > 9003上运行: server:/etc/php5/fpm/pool.d$ grep 900 * my-app-deploy.conf:listen = 127.0.0.1:9002 my-app-dev.conf:listen = 127.0.0.1:9001 my-web.conf:listen = 127.0.0.1:9003 server:/etc/nginx/conf.d$ grep 900 * my-app-deploy.conf: fastcgi_pass 127.0.0.1:9002; my-app-dev.conf: fastcgi_pass 127.0.0.1:9001; my-app-web.conf: fastcgi_pass 127.0.0.1:9003; 我已经成功地重启了php-fpm和nginx : server:$ sudo service nginx restart * Restarting nginx nginx …done. server:$ sudo service php5-fpm restart * Restarting PHP5 […]
这是两个不同的PHP文件的故事。 文件1来源: <?php $null->test(); 文件1输出: 致命错误:在一个非对象中调用成员函数test() /wwwroot/sites/example.com/public/fatal.php在第1行 这也打印到/var/log/php-fpm/www-error.log(在我的www.conf中定义) 文件2: class A {} function test(A $obj) { echo 'here…'; } var_dump('started'); $a = new A(); test($a); var_dump('this is going to error out'); test($null); var_dump('do we get here?'); 文件2输出: string“开始”(长度= 7) 这里… string“这将会出错”(长度= 26) 没有错误logging。 /etc/php-fpm.d/www.conf中的相关设置: catch_workers_output = yesphp_flag [display_errors] =开启 php_flag [display_startup_errors] =开启 php_admin_value [error_reporting] = […]
在负载下,我的PHP5-fpm(在32位ubuntu 10.10上)产生如下的段错误: kernel: [4881937.884863] php5-fpm[2638]: segfault at 4204eb41 ip 0832d235 sp bfcea5e0 error 4 in php5-fpm[8048000+70d000] 我如何做到这一点,所以这些segfaults产生一个核心转储,以便我可以检查调用堆栈找出段错误来自哪里? 核心堆放在哪里生产?
我用nginx + php-fpm和mysql获得服务器设置。 我有另一台服务器只有安装的PHP-FPM,所以想用作负载平衡。 但是,当我用php-fpm作为负载平衡器使用这个专用的服务器时,打开页面时出现错误:“拒绝访问”。 /etc/nginx/nginx.conf user www-data; worker_processes 3; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 64; access_log /var/log/nginx/access.log; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; tcp_nodelay on; #gzip on; upstream php { server dedicatedserverip:9000; } include /etc/nginx/sites-enabled/*; } /etc/nginx/sites-enabled/site.org.conf server { listen 81; […]
似乎php-fpm正在分配越来越多的内存,虽然峰值和下降的请求量。 无法发布多个图片,所以我把它们放在这里 。 正如你可以看到在图片的uri中,一个图片nginx请求,显示明显的下跌和高峰。 其他的,每个孩子的php-fpm记忆和平均记忆似乎并没有遵循相同的模式。 只有重新启动php-fpm才能起作用,即使如此,我也不能说我注意到了性能的任何变化。 系统是好的,响应时间是好的,一切都很好,只是好奇,如果这是预期的行为,并且如果它有性能好处或应该避免(通过降低max_requests什么?)。 系统运行Debian GNU / Linux 6.0 Squeeze,AMD64。 PHP版本5.3.6。 PHP 5.3.6 pool.d / www.conf: pm.max_children = 50 pm.start_servers = 30 pm.min_spare_servers = 5 pm.max_spare_servers = 35 pm.max_requests = 1024 我已经得到了这些在php-fpm.log,因为它是新鲜安装的: [28-Jun-2011 14:45:39]警告:[池www]孩子1893年从信号9(SIGKILL)退出后从22296.217811秒开始 [28-Jun-2011 14:45:39]通知:[池www]孩子18391开始 [28-Jun-2011 14:45:39]警告:[池www]子1903从信号9(SIGKILL)退出后从22296.213677秒 [28-Jun-2011 14:45:39]通知:[池www]孩子18392开始 [28-Jun-2011 14:45:39]警告:在启动22296.213757秒后[pool www]子1904在信号9(SIGKILL)上退出 [28-Jun-2011 14:45:39]通知:[池www] 18393孩子开始 [28-Jun-2011 14:45:39]警告:在启动22296.214307秒后[pool www]子1905在信号9(SIGKILL)上退出 [28-Jun-2011 14:46:20]注意:fpm正在运行,pid 18410 […]
我有几个用户在服务器上运行PHP脚本,我想locking它,使他们的脚本只能访问他们的www目录中的文件(它不使用Linux用户帐户,所以没有主目录) 。 open_basedir似乎是一个明显的select,但我怎么能根据脚本运行的位置来设置该参数? 很明显, open_basedir的值对于每个用户都是不同的。 我在Ubuntu 11.04上运行PHP5-FPM-PHP5作为nginx连接的FastCGI进程 任何帮助或build议表示赞赏!
编辑:供将来参考 通过nginx的多个版本的PHP Nginx和不同版本的PHP FPM + PHP 我使用PHP 5.5.12运行带有LEMP堆栈的Ubuntu 14.10。 我有一些旧版的WordPress网站,它们需要PHP 5.3.3以及一些使用相当新版PHP的WP网站,所有这些网站都运行在本地机器上的nginx 上 。 我的手绑在虚拟机和沙箱上,我可以玩的是nginx,所以这个问题。 我理解人们的安全问题,但我需要这些网站在本地运行,以便在更新到最新的PHP / WP版本时testing破损的function。 我想让nginx根据WordPress网站运行正确的PHP版本(使用php-fpm)。 根据另一个 SF问题,实现这一目标的一种方法是让不同的PHP版本在不同的端口/套接字上运行,并将nginx服务器块configuration为使用相应的端口/套接字。 我已经编译了PHP 5.3.3手动包含php-fpm,但是这是我得到的最远。 实际上,我希望有人更详细地解释这个答案。 我不能完全弄清楚如何“在不同的端口(或套接字)上运行每个版本的php-fpm”或“在你的nginx服务器模块中的fastcgi_pass参数中configuration适当的端口” 。 我的一个服务器块看起来像这个参考 server { listen 80; listen [::]:80; root /usr/share/nginx/html/testsite1; index index.php index.html index.htm; server_name local.testsite1.com; location / { try_files $uri $uri/ /index.php?q=$uri&$args; } error_page 404 /404.html; error_page 500 502 503 […]