【发布时间】:2014-01-21 17:47:31
【问题描述】:
我使用的是 Apache 2.4.7 和 PHP 5.5.7。
我在C:\web\vhosts\Symfony\web 中有一个test.php 文件。
$_SERVER['SCRIPT_FILENAME'] 的值是正确的:
C:/web/vhosts/Symfony/web/test.php
但是$_SERVER['SCRIPT_NAME'] 的值取决于我如何加载 PHP:
如果我将 PHP 作为 Apache 模块加载,$_SERVER['SCRIPT_NAME'] 的值为:
/test.php
我有点惊讶它与SCRIPT_FILENAME 不一样,但我猜至少它是一个正确的值。
这是我加载 PHP 的方式:
LoadModule php5_module "C:/web/php-5.5.7-Win32-VC11-x86/php5apache2_4.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "C:/web/php-5.5.7-Win32-VC11-x86"
如果我使用 mod_fcgid 加载 PHP,$_SERVER['SCRIPT_NAME'] 的值为:
C:/test.php
这是错误的......
这是我加载 PHP 的方式(基于 a tutorial from ApacheLounge):
LoadModule fcgid_module modules/mod_fcgid.so
<IfModule fcgid_module>
FcgidIOTimeout 40
FcgidConnectTimeout 10
FcgidMaxProcesses 300
FcgidMaxProcessesPerClass 300
FcgidOutputBufferSize 64
ProcessLifeTime 0
FcgidMaxRequestsPerProcess 0
FcgidMinProcessesPerClass 0
FcgidFixPathinfo 1
FcgidProcessLifeTime 0
FcgidZombieScanInterval 20
FcgidMaxRequestLen 536870912
FcgidIOTimeout 120
FcgidTimeScore 3
FcgidPassHeader Authorization
FcgidInitialEnv PHPRC "C:\\web\\php-5.5.7-Win32-VC11-x86"
FcgidInitialEnv PATH "C:\\web\\php-5.5.7-Win32-VC11-x86;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;"
FcgidInitialEnv SystemRoot "C:\\Windows"
FcgidInitialEnv SystemDrive "C:"
FcgidInitialEnv TEMP "C:\\WINDOWS\\TEMP"
FcgidInitialEnv TMP "C:\\WINDOWS\\TEMP"
FcgidInitialEnv windir "C:\\WINDOWS"
<Files ~ "\.php$">
Options Indexes FollowSymLinks ExecCGI
AddHandler fcgid-script .php
FcgidWrapper "C:/web/php-5.5.7-Win32-VC11-x86/php-cgi.exe" .php
</Files>
</IfModule>
这个设置有什么问题?
【问题讨论】: