Articles of FastCGI的

为什么FastCGI不能正确处理PATH_INFO重写?

我当前的主机使用FastCGI来进行PHP设置,当mod_rewrite指令redirect到带有PATH_INFO部分的URL时,这显然会导致一些问题。 例如,使用以下内容时会出现问题: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 在使用上述操作时,导航到重写的URL会导致PHP中的“No input file specified”错误消息,这意味着PHP没有正确传递文件进行parsing。 我已经能够从networkingsearch学习,这个问题只出现在FastCGI下运行PHP时,但我没有find一个直接的答案是为什么 。 相反,networking显然充斥着一些盲目改变重写以使用查询string(例如,将index.php/$1部分改为index.php?/$1 – 注意? )而不真正理解底层问题的人。 我知道这个问题是重写过程的一部分,或者是重写过程的结果,并且这不是FastCGI安装无法处理PATH_INFO URL的问题,因为$_SERVER['PATH_INFO']当我直接导航到www.example.com/index.php/foobar而不经过重写过程时,variables被适当地填充。 有人可以解释什么是在重写和随后交付给PHP造成的失败?

Nginx重写规则,fastcgi和WordPress – 404页面是由于REQUEST_URI吗?

我试图转换为Apache创build的一组重写规则,用于托pipe与NginX(fastcgi,PHP)一起使用的WordPress站点。 据我所知,WordPress有一个页面(“ expo ”),然后使用主题中的代码来检查请求参数(“ p ”)。 然后它使用“ p ”来执行一些数据库查询和呈现内容。 所以你可以通过调用/expo?p=name_of_expo访问这个页面。 要求是URL的结构如下: /expo/name_of_expo 我已经把它剥离到我可以做的最基本的重写规则: location ~ ^/expo/.+/?$ { rewrite ^/(.+)/(.+)/?$ /$1/?p=$2? last; try_files $uri $uri/ /index.php?$args; } location / { index index.php; try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } 进入/expo?p=name_of_expo ,显示正确的页面。 但是,当去/expo/name_of_expo ,WordPress 404被触发。 […]

Nginx不提供静态文件

可能重复: nginx + django提供静态文件 我遵循本指南在Ubuntu 11.10上部署Django + Nginx。 Django运行良好,但不提供任何静态文件。 这是从我的settings.py节选: STATIC_ROOT = '' STATIC_URL = '/static/' ADMIN_MEDIA_PREFIX = DOMAIN_URL + '/static/admin/' STATICFILES_DIRS = ( os.path.join(PROJECT_ROOT, 'static'), ) 并从nginx.conf server { listen 80; server_name localhost; # site_media – folder in uri for static files location /static/ { autoindex on; alias /project/app/static; } location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|p$ access_log […]

nginx将URL重写为小写的url

我有nginx设置,但是我需要解决一个问题,有人input“/ Home”来: 把它重写成小写的“/ home”(对所有文件和目录,不只是在家里),而是find大写(如果有的话)文件。 还是需要添加另一个使用不区分大小写的字符“〜*”的位置? 实际的目录和文件布局确实包含混合的大写和小写字符。 为了简单起见,我想保留这个,例如/ Home和/ About是实际的目录,但是对于SEO,我想永久redirect到小写/ home,但是find实际的/ Home目录。 我不确定这是否可以通过重写规则来完成,或者是否在“位置/ {}”或某个组合上不区分大小写。 location / { try_files $uri $uri/ /Home; } 注意:我不是在寻找属于Nginx陷阱的答案, 包括邪恶的Ifs 。

Windows上的PHP作为Fast-CGI(IIS与Apache)?

我们目前有一个Windows Web服务器。 它运行Apache和PHP作为一个模块 。 服务器本身就是一个野兽,但是在安装Apache模块的时候,PHP在Windows环境下performance不佳,我们正在经历这个第一手资料。 无论如何,这个周末我打算重新configuration服务器来进行FastCGI安装,而我将使用IIS7而不是Apache。 但是,这里有个问题,我们有很多站点设置了.htaccess文件,我们并没有兴趣清理这些文件,以使这些站点能够在IIS上正常工作。 我的问题是,有谁知道如果在Apache上安装FastCGI PHP具有可比较的速度到IIS? 你可以阅读整个networking在IIS上是多么惊人的PHP,但现在我们正在考虑与Apache保持一个简单的过渡。 如果Apache不是一个好的select,那么我想我们将会执行IIS路由并修复破损的网站,但是如果Apache使用Fast-CGI可以提供类似的性能,我们希望避免这种情况。 你怎么看?

PHP-APC安装

试图让我的头在PHP 5.3.13安装APCcaching的方式。 这是一个带有apache的VPS,最好通过whm / cpanelconfiguration(尽pipe不止)。 我读了一大堆build议使用FastCGI和APC的文章,因为suPHP对于操作码caching做得不好,而fcgid_module也不适合APC。 注意到fcgid_module是一个比FastCGI更新的包,这就是whm / cpanel为你安装的,但是好的,我猜可以解决。 然后,我正在阅读的是, php-fpm是pipe理php进程的更好的select,特别是对于APC。 好。 然后我意识到php-fpm自5.3版本被包含在php核心中,并且感到困惑。 这是否意味着我不必使用FastCGI/fcgid_module (以及我应该使用什么来代替它们 – mod_php或cgi?)? 或者这意味着我仍然需要获得旧的FastCGI模块,并将其configuration为每个用户使用一个进程(或者只有一个进程?)? 或者fcgid_module也fcgid_module工作? 如果使用mod_php / APC来避免安装php-fpm和FastCGI(whm / cpanel不支持两者)的麻烦,那么这种方法有多糟糕呢?Varnish将会为大多数静态内容提供服务 – 不需要php进程被创build为静态内容。 他们的FastCGI / fcgid_module / php-fpm / APCconfiguration的任何例子都将不胜感激。

eAccelerator与两个版本的PHP通过FastCGI

好吧,我将概述如何在我的专用盒子上为我设置和运行一切。 我有一切工作接受eAccelerator只适用于我的一个PHP应用程序。 的Apache2 我有Apache2安装程序和虚拟主机运行。 Apache在/etc/apache2/php-version-5.2.conf有一个文件,当它需要运行PHP 5.2的时候,它将被包含在每个虚拟主机上: #include for sites that still need to run at php 5.2.x SetEnv PHP_INI_SCAN_DIR /opt/php5.2/conf.d/ ScriptAlias /php5-cgi /usr/lib/cgi-bin/php5-cgi Action application/x-httpd-php5 /php5-cgi <FilesMatch "\.php"> SetHandler application/x-httpd-php5 </FilesMatch> AddHandler application/x-httpd-php5 .php .php5 .php4 .php3 .phtml PHP 我已经从Debian repo安装了最新版本的PHP 5.3。 我还有一个PHP 5.2.17的编译版本,位于/opt/php5.2/ 。 为了编译PHP 5.2并让fastcgi传递给相应的PHP应用程序, 我遵循了这些指示 。 这根据需要工作。 eAccelerator在 eAccelerator正在使用Debian repo中的PHP 5.3,但是我无法将它加载到PHP 5.2的编译版本上。 […]

file upload文件夹权限fastCGI – 如何使其可写?

我正在使用cPanel WHM运行fastcgi / suEXEC的centos 5.7 我正在尝试使一个特定的文件夹可写,以允许脚本上传文件,但似乎有问题。 我想要写入的文件夹(和所有recursion文件夹)是: /home/mydomain/public_html/uploads 而且我只想让用户“songbanc”运行的脚本能够写入这个目录。 我已经尝试了以下内容: chown -R songbanc /home/mydomain/public_html/uploads chmod -R 755 /home/mydomain/public_html/uploads 但它似乎仍然没有工作。 如果我通过FTP客户端手动设置权限到777,脚本将只上传文件。 我假设我误解了如何为fastcgi用户设置权限,希望有人可以帮助我。 提前致谢 编辑:在其中一个脚本或文件夹上运行getfacl给出以下内容: # file: home/mydomain/public_html/ripples/1.jpg # owner: songbanc # group: songbanc 所以看起来主人是正确的? 我现在完全困惑! 编辑2: 情节变厚… lsattr和chattr正在返回不适当的设备的ioctl当阅读标志…

用别名域分隔域与一个域

我已经build立了一个使用ISPConfig 3进行pipe理的LAMP服务器。 PHP运行在Fast-CGI上。 我有几个域,如my_site.com,my_site.net和my_site.org,但他们都指向相同的应用程序/网站。 每个域都有自己的Web根文件夹,并在其自己的用户下运行。 应用程序本身位于另一个用户拥有的通用目录中,如下所示: # path to my_application (owned by web1) /var/www/clients/client1/web1/web/my_application/ # sym-link to my_application from my_site.com-web-root (owned by web5) /var/www/my_site.com/web -> /var/www/clients/client1/web1/web/ # sym-link to my_application from my_site.net (owned by web4) /var/www/my_site.net/web -> /var/www/clients/client1/web1/web/ 通过这样的设置,我在执行PHP的文件系统操作时遇到了一些有关权限的问题。 例如,如果应用程序是通过my_site.com调用的,则用户web5正在尝试将某些内容写入应用程序文件夹。 但是应用程序文件夹由用户web1拥有,所以web5不允许在那里写入。 就我而言,这就是Fast-CGI的工作原理。 经过一些研究并询问了一些人,解决scheme似乎是将其全部分解到一个域(例如my_site.com),并将其他域(my_site.org,my_site.net)定义为这个域的别名。 这样,只有一个用户具有所有必要的权限。 但是,这意味着我们不得不购买多域名SSL证书 – 但是我们已经为每个域名拥有SSL证书。 我们能够使用他们与我们以前的供应商(pipe理托pipe),在那里,我们也只有一个networking目录和多个域名。 所以,如果这是可能的,我想知道:在这种情况下,把所有的域合并到一个主域名和几个别名域是否是正确的? 或者我可能误解了一些东西?

解谜:开启https时显示php代码

当我尝试设置https(让nginx在443上使用ssl设置)并访问我的页面时,出现了令人惊讶的事情,我看到了我的php代码正在显示。 我在nginx config中看到这个fastcgi_pass 127.0.0.1:9000; 这是否意味着nginx将PHP请求直接转到9000端口? 我的https设置是这样的 server { listen 443; ssl on; ssl_certificate /etc/domain_com.crt; ssl_certificate_key /etc/domain.key; ssl_protocols SSLv3 TLSv1; ssl_ciphers ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM; server_name domain.com; } 顺便说一句,我的原始结构是haproxy到Nginx。 希望有人在这方面有经验可以点亮我一点。 谢谢!