Articles of PHP的

如何在同一台服务器上使用nginx将php和nodejs应用程序一起configuration

我有一个Ubuntu的VPC。 我有一个nodejs应用程序运行在一些文件夹中。 我有一个PHP应用程序运行在Apache / var / www。 我想要的是configurationnginx,以便当用户来到mydomain.com,他/她被redirect到我的节点应用程序运行在端口3000上,当用户访问mydomain.com/docs时,他/她被redirect到我的PHP在端口80上的Apache上运行的应用程序。 server { listen 80; root /var/www; location / { try_files $uri $uri/ /index.html; } location ~\.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } location /doc/ { alias /usr/share/doc/; autoindex on; allow 127.0.0.1; deny all; } location ~/\.ht { deny all; } } 我的nodejs应用程序的conf文件是: upstream […]

nginx – 把PHP通过TCP而不是套接字

我收到这样的错误: 2014/07/18 15:01:24 [error] 5700#0: *1 upstream sent too big header while reading response header from upstream, client: 1.2.3.4, server: serv_name.com, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "serv_name.pl" 我知道要解决这个问题,我必须通过TCP而不是套接字的PHPstream量。 只有一个webb应用程序 – 我们有12个网站在nginx上运行。 我怎样才能做到这一点speciefiednetworking应用程序? 添加/etc/php5/fpm/pool.d目录文件web_name.conf就足够了? 我应该把这个文件放进去 我必须添加更多的信息,因为我搞砸了一点。 上面的错误是SQL请求,并发生与套接字PHPstream量相关的并行错误502 – 这就是为什么我写了有关将套接字更改为TCP。

Nginx + php的fastcgi无法打开文件,权限被拒绝

在尝试访问php文件时,我遇到了一些Nginx和Php fastcgi的权限问题。 我在Redhat 7中使用5.5.15和Nginx 1.6.0。 我的PHP文件现在非常简单。 <?php echo "\nscript owner : ".get_current_user()."\n"; $myFile = '/usr/share/nginx/html/test.log'; $fh = fopen($myFile, 'a') or die("can''t open file"); ?> 获取当前用户将导致:“myuser” 我得到的错误如下: 2014/08/26 22:47:14 [error] 6424#0: *16 FastCGI sent in stderr: "PHP message: PHP Warning: fopen(/usr/share/nginx/html/test.log): failed to open stream: Permission denied in /usr/share/nginx/html/test.php on line 19" while reading response header […]

$ _SERVER 总是在nginx php5-fpm服务器上为空

我在Debian上安装了一个带有nginx和php5-fpm的新webserver。 但不知何故$ _SERVER ['HTTP_X_REQUESTED_WITH']保持空,即使请求来自jQuery或JavaScript。 我尝试了所有不同的选项,但它保持空白。 这是我的fastcgi_param文件 fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param […]

OPcache和PHP-FPM / Nginx的命中率为0%

我试图让V5.5的OPcache在运行在Ubuntu 14.04上的Vagrant的Nginx / PHP-FPM设置上工作。 我有我的/etc/php5/mods-available/opcache.ini目录configuration如下: zend_extension=opcache.so opcache.enable=1 opcache.memory_consumption=256 opcache.max_accelerated_files=50000 运行php -v和phpinfo()显示OPcache已启用,并且加载opcache-status和opcache-gui显示相同。 在OPcachegraphics用户界面中,我可以看到文件正在被caching,而且我也通过设置OPcache以详细模式login来证实这一点。 问题是…他们从来没有被打中! 我跑了ApacheBench锤击的应用程序,并没有一个单一的命中注册 – 0命中和103失误。 我甚至testing过一个hello_world.php文件,它只是执行hello_world.php echo 'Hello, world!'; ,而且每次都会注册为“miss”。 有没有人有任何想法可能是错的? 更新:我已经设法得到一个可重复的login点击案件。 如果在运行service php5-fpm restart之后立即运行100个并发连接的ApacheBench,caching命中率> 75%。 从那时起,每个“正常的”更新也将被注册为一个命中。 但是,如果我重新启动php-fpm,并且我的初始请求是“正常的”(即仅从我的Web浏览器),然后运行100个并发连接的ApacheBench – 它们都会错过… 这就像最初的请求需要锤击服务器,以便点击坚持从那时起…真奇怪! 我假设它可能是用php-fpm产生进程的方式,但是我真的是这个领域的新手,所以如果这给了任何人一些线索 – 请帮助!

如何禁用Nginx的双gzip编码fastcgi后端偶尔服务gzipped与内容编码?

如果后端已经设置了“content-encoding”标题,是否有任何巧妙的方法来欺骗nginx来停止gzip? Nginxconfiguration为从fastcgi后端gzip输出。 这在99%的情况下效果很好。 除了极less数情况下,php会发送一个原始的gzip文件并附加一个Content-Encoding: gzip头文件。 不幸的是,Nginx会马上推出,并尝试第二次gzip这个内容。 产生一个双重content-encoding: gzip content-encoding: gzip头文件和双重编码的gzip正文。 大多数现代浏览器可以处理这个,Firefox,Chrome。 IE8不能,Safari移动不能,旧的Safari 5的Windows不能 – 相反,他们会显示乱码的gzip内容,因为它合并内容编码标题,只解码一次gzip体。 感谢您的任何想法。

Php(SF2)页面不用新代码更新

用ubuntu下的 php5-fpm和mysql运行nginx 14.04.1 LTS 。 每当我更新我的代码( SF2 / PHP ),只要我加载我的网页,更改保持不变。 我怎么知道发生了什么? 这可能是/ var / www目录下的问题。 虽然用nano打开文件显示我正在更新文件。 这可能是nginx / php5-fpm有一些问题。 (尝试重新加载/重新启动,没有影响) 它可能是下面的代码 发生了什么事情的例子: 在我的页面/用户: Warning: Missing argument 2 for JMS\Serializer\Serializer::serialize(), called in /var/www/webshop/src/AppBundle/Controller/UsersController.php on line 35 and defined 用下面的代码: public function getUsersAction() { $doctrine = $this->getDoctrine(); $doctrineUsers = $doctrine->getRepository("AppBundle:User")->findAll(); $users = array(); foreach($doctrineUsers as $user) { […]

Nginx服务器:上游超时(10060:连接尝试失败)

我们正在运行一个服务,将问题从Jira迁移到testing链接。因此,我使用nginx服务器与mysql数据库进行通信,并在浏览器中运行testlink。 当我导入更多的问题突然nginx服务器自动closures。我运行我的服务和nginx服务器在Windows Server 2008 R2标准和64位操作系统。 我检查了C:\nginx\logs的error.log文件,发现错误为 上游超时(10060:连接尝试失败,因为连接方在一段时间后没有正确响应,或build立的连接失败,因为连接的主机未能响应)连接到上游时,客户端:192.168.27.151,server:localhost ,请求:“GET /testlink/lib/general/frmWorkArea.php?feature=reqSpecMgmt HTTP / 1.1”,上游:“fastcgi://127.0.0.1:9000”,主机:“wo-qatestlink01”,referrer:“ http ://wo-qatestlink01/testlink/lib/general/navBar.php?tproject_id = 0&tplan_id = 0&updateMainPage = 1 “ 谢谢。 日志文件 #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr – $remote_user [$time_local] "$request" […]

Nginx + PHP-FPM缓慢并发AJAX请求

由于速度的原因,我从普通的LAMP堆栈(Linux + Apache + MySQL + PHP)切换到了nginx + PHP-FPM。 速度的提高是不可思议的 – 不是测量的,但是对于前端使用Zend(旧库)和Zend 2(新应用)以及前端使用Bootstrap + CoffeeScript + Backbone.js的项目来说,站点渲染速度要快2到3倍! 唯一的缺点是对于调用了太多并发AJAX请求的页面。 大多数情况下,一个页面调用多达5个不同的AJAX请求来在渲染上加载数据,但其中很less需要10到20个并发请求。 在这种情况下,与在Apache上渲染相比,渲染速度减慢了2到4倍(现在只能在两个不同的服务器上进行比较,而运行Apache的比较老,整体速度较慢 – 但是可以渲染具有多个并发AJAX请求的页面更快)。 这是我的PHP-FPMconfiguration(关于池pipe理器): pm = dynamic pm.max_children = 20 pm.start_servers = 3 pm.min_spare_servers = 2 pm.max_spare_servers = 4 将pm.max_children增加到40似乎对速度没有任何影响,但是从默认值5改变为20我可以看到速度增加。 我也增加了nginx的worker_processes值为4 (核心数量),同时保持worker_connections默认的1024值。 还有什么我应该改变,以使更多的并发AJAX请求运行速度更快的网页?

cookies不工作,Apache到Nginx

我已经把我的网站从apache移动到了nginx,但是现在我遇到了这样的问题:当我们的网站尝试login网站时,我的网站不想向用户发送cookie(或者开始一个会话)。 这是我的login脚本: <?php session_start(); include("includes/config.php"); $naam = mysql_real_escape_string($_POST["naam"]); $wachtwoord = md5(mysql_real_escape_string($_POST["wachtwoord"])); if (strlen($naam) > 0) { if (strlen($wachtwoord) > 0) { $uQuery = mysql_query("SELECT * FROM users WHERE username = '".$naam."' AND password = '".$wachtwoord."' LIMIT 1"); if (mysql_num_rows($uQuery)) { while($lid = mysql_fetch_array($uQuery)) { $id = $lid["id"]; } $_SESSION["lid"] = $id; header("Location: me.php"); } else […]