如何确定FastCGI是否用于运行php脚本

Jim*_*mmy 16 php iis iis-7 fastcgi

我有一个托管网站,我在配置Joomla时遇到了麻烦(在IIS7 + win server 2008上运行Joomla + php + mySQL).我有一个类似的配置在本地机器上运行(Joomla + php + mySQL在IIS7 + vista x64上),所以我至少能够按照各种教程中显示的说明如何设置它.

托管网站的这种症状是我无法在Joomla中打开任何SEO设置(甚至不是第一个设置,"搜索引擎友好URL").我得到404(文件未找到)或URL显示正确重写但它始终显示主页的内容.我的家用机器上有类似的问题,原来是因为我没有使用FastCGI来托管php,所以我决定在托管网站上进行调查.

无论如何,我注意到托管站点上托管joomla的目录的web.config文件中有以下行:

<add name="Plesk_Handler_3522909676" path="*.php" verb="*" modules="IsapiModule" scriptProcessor="c:\program files (x86)\parallels\plesk\additional\pleskphp5\php5isapi.dll" resourceType="Either" />
Run Code Online (Sandbox Code Playgroud)

从过去的经验来看,我知道php在没有在fastCGI下运行时会遇到一些问题.我注意到根文件夹中的web.config使用了以下行:

<add name="Plesk_Handler_0286090609" path="*.php" verb="*" modules="CgiModule" scriptProcessor="c:\program files (x86)\parallels\plesk\additional\pleskphp5\php-cgi.exe" resourceType="Either" /> 
Run Code Online (Sandbox Code Playgroud)

我在joomla目录中的web.config中复制了它,并得到了不同的行为......但仍然无法正常工作.如果我在运行phpInfo()的joomla目录中加载.php文件,则在Server API下它会显示CGI/FastCGI.那是肯定的确认正在使用FastCGI的?为什么web配置中的处理程序指向modules ="CgiModule"而不是modules ="FastCgiModule"(我甚至不确定是否存在,但我只是发现提到CgiModule可疑).

这是一个托管网站,据我所知,我无法访问ApplicationHost.config文件...

Jim*_*mmy 27

这是一个简单的测试:

  1. 用.创建一个phpinfo.php文件

 <?php phpinfo(); ?> 
Run Code Online (Sandbox Code Playgroud)

内;

  1. 请求http://yoursite.com/phpinfo.php/foobar?foo=bar

  2. 检查phpinfo的输出并查找_SERVER ["REQUEST_URI"].

如果缺少此变量,则使用CGI.如果变量存在并正确设置为/phpinfo.php/foobar?foo=bar,则使用ISAPI或FastCGI.查看Server API输出顶部附近; 它应该设置为ISAPI(这意味着使用ISAPI)或CGI/FastCGI(这意味着正在使用FastCGI,因为我们已经排除了CGI).


Gre*_*gor 6

php_sapi_name() 或 PHP_SAPI,都可以。

http://php.net/manual/en/function.php-sapi-name.php

<?php
    if (php_sapi_name() != 'cgi-fcgi'){
        echo 'I knew fastcgi wasn\'t working.';
    }else{
        echo 'Holy crap, something worked for once.';
    }
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以使用(在centos上)apachectl -M,您将显示启用了哪些模块:

apachectl -M:

file_cache_module (shared)
mem_cache_module (shared)
version_module (shared)
fastcgi_module (shared)
Run Code Online (Sandbox Code Playgroud)