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

问题描述 投票:17回答:8

我有一个托管站点,但在配置Joomla时遇到了麻烦(在IIS7 + Win Server 2008上运行Joomla + php + mySQL)。我在本地计算机(IIS7 + vista x64上的Joomla + php + mySQL)上运行了类似的配置,因此我至少能够按照各种教程中显示的说明进行设置。

此托管网站的症状是,我无法在Joomla中打开任何SEO设置(甚至没有打开第一个设置“搜索引擎友好的网址”)。我收到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" />

[根据过去的经验,我知道在不使用fastCGI运行时php会有一些问题。我注意到根文件夹中的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" /> 

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

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

php iis iis-7 fastcgi
8个回答
27
投票

这里是一个简单的测试:

  1. 使用]创建phpinfo.php文件>
 <?php phpinfo(); ?> 

内部;

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

  2. 检查phpinfo的输出并查找_SERVER [“ REQUEST_URI”]。

  3. 如果缺少此变量,则使用CGI。如果存在该变量并将其正确设置为/phpinfo.php/foobar?foo=bar,则使用ISAPI或FastCGI。查看服务器API输出顶部附近的内容;应该将其设置为ISAPI(表示正在使用ISAPI)或CGI / FastCGI(表示正在使用FastCGI,因为我们已经排除了CGI)。


4
投票

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


3
投票

php_sapi_name()或PHP_SAPI都可以。


2
投票

[不幸的是,\_SERVER["REQUEST_URI"]的检查对我不起作用。使用CGI


0
投票
Joomla创建一个带有重写规则的.htaccess文件,以启用搜索引擎友好的URL。如果您使用的是Apache,则必须为包含joomla安装的目录设置“ AllowOverride FileInfo”。如果使用的是IIS,则需要一个模块,例如IISModRewrite。以下是有关此操作的说明:[http://www.micronovae.com/ModRewrite/articles/SEFJoomla.html]

0
投票
您应该看到来自它的引用

0
投票
请确保最初将一切设置为在fastcgi不运行时脚本完全失败的位置。然后,您将知道,当fastcgi守护程序起作用时,才是原因。

0
投票
这对我有用。
© www.soinside.com 2019 - 2024. All rights reserved.