修复Godaddy虚拟主机上的No input file specified错误

想在godaddy上面运行一个thinkphp项目,结果出现 No input file specified错误。百度一下:最后的是我用的解决方案。

——

——————————————–

这个问题目前多发现于godaddy的虚拟主机上,而它的配置也是我见过最奇怪的虚拟主机之一。首先出现以上错误的原因是php没有识别出 pathinfo导致的,因为godaddy使用的是cgi模式(估计是为了同时兼容php4和php5)来运行php,所以会出现一些奇怪的问题。

  在根目录下找到php5.ini文件(如果找不到就建立一个),在里面加上如下内容

cgi.fix_pathinfo = 1

———————————-

网站跟目录下的 .htaccess文件:

[code]
addhandler x-httpd-php5-cgi .php5

addhandler x-httpd-php5-cgi .php

addhandler x-httpd-php-cgi .php4

############################################

## uncomment these lines for CGI mode

## make sure to specify the correct cgi php binary file name

## it might be /cgi-bin/php-cgi

#    Action php5-cgi /cgi-bin/php5-cgi

#    AddHandler php5-cgi .php

############################################

## GoDaddy specific options

#   Options -MultiViews

## you might also need to add this line to php.ini

##     cgi.fix_pathinfo = 1

## if it still doesn’t work, rename php.ini to php5.ini

############################################

## this line is specific for 1and1 hosting

#AddType x-mapp-php5 .php

#AddHandler x-mapp-php5 .php

############################################

## default index file

DirectoryIndex index.php

<IfModule mod_php5.c>

############################################

## adjust memory limit

#    php_value memory_limit 64M

php_value memory_limit 64M

php_value max_execution_time 18000

############################################

## disable magic quotes for php request vars

php_flag magic_quotes_gpc off

############################################

## disable automatic session start

## before autoload was initialized

php_flag session.auto_start off

############################################

## enable resulting html compression

#php_flag zlib.output_compression on

###########################################

# disable user agent verification to not break multiple image upload

php_flag suhosin.session.cryptua off

###########################################

# turn off compatibility with PHP4 when dealing with objects

php_flag zend.ze1_compatibility_mode Off

</IfModule>

<IfModule mod_security.c>

###########################################

# disable POST processing to not break multiple image upload

SecFilterEngine Off

SecFilterScanPOST Off

</IfModule>

<IfModule mod_deflate.c>

############################################

## enable apache served files compression

## http://shanmao.me

# Insert filter on all content

###SetOutputFilter DEFLATE

# Insert filter on selected content types only

#AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript

# Netscape 4.x has some problems…

#BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems

#BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine

#BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# Don’t compress images

#SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary

# Make sure proxies don’t deliver the wrong content

#Header append Vary User-Agent env=!dont-vary

</IfModule>

<IfModule mod_ssl.c>

############################################

## make HTTPS env vars available for CGI mode

SSLOptions StdEnvVars

</IfModule>

<IfModule mod_rewrite.c>

############################################

## enable rewrites

Options +FollowSymLinks

RewriteEngine on

############################################

## you can put here your magento root folder

## path relative to web root

RewriteBase /

############################################

## workaround for HTTP authorization

## in CGI environment

RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

############################################

## always send 404 on missing files in these folders

RewriteCond %{REQUEST_URI} !^/(media|skin|js)/

############################################

## never rewrite for existing files, directories and links

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-l

############################################

## rewrite everything else to index.php

RewriteRule .* index.php [L]

</IfModule>

############################################

## Prevent character encoding issues from server overrides

## If you still have problems, use the second line instead

AddDefaultCharset Off

#AddDefaultCharset UTF-8

<IfModule mod_expires.c>

############################################

## Add default Expires header

## http://developer.yahoo.com/performance/rules.html#expires

ExpiresDefault "access plus 1 year"

</IfModule>

############################################

## By default allow all access

Order allow,deny

Allow from all

############################################

## If running in cluster environment, uncomment this

## http://developer.yahoo.com/performance/rules.html#etags

#FileETag non
[/code]

———————————————————-
因为在Fastcgi模式下,php不支持rewrite的目标网址的PATH_INFO的解析
ThinkPHP运行在URL_MODEL=2时,会出现 No input file specified.的情况,
这时可以修改网站目录的.htaccess文件:
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
改为
RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]

.htaccess的内容为:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]

———————————————–

我的解决方案:

在根目录。新建一个文件 : php5.ini

文件里面写入这些:
cgi.fix_pathinfo=1
doc_root=

然后在相同目录下 的 .htaccess 文件加入:

addhandler x-httpd-php5-cgi .php5

addhandler x-httpd-php5-cgi .php

addhandler x-httpd-php-cgi .php4

即可搞定!