没有指定input文件
我正在运行Anchor CMS ,我刚刚升级到0.8版本。 当我尝试运行安装程序时,出现“没有指定input文件”错误。 我相信这很可能是一个.htaccess的问题,但我不知道什么是正确的设置。
我的网站可以在这里find。
我的.htaccess被设置为:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase {base} # Allow any files or directories that exist to be displayed directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Rewrite all other URLs to index.php/URL RewriteRule ^(.*)$ {index} [L] </IfModule> <IfModule !mod_rewrite.c> ErrorDocument 404 index.php </IfModule>
如果有帮助,我也使用GoDaddy作为托pipe服务提供商。
指定的Noinput文件是由于服务器上PHP的实现而呈现的消息,在这种情况下表示CGI实现(可以使用phpinfo()
进行validation)。
现在,为了正确地解释这个,你需要对你的系统如何使用URL有一些基本的了解。 根据您的.htaccess文件,您的CMS似乎期望URL作为PATH_INFO
variables传递。 CGI和FastCGI实现没有PATH_INFO
可用,所以当试图传递URI时,PHP会因为这个消息而失败。
我们需要find一个替代scheme。
一个select是尝试解决这个问题。 看看核心php.ini指令的文档,你可以看到你可以改变你的实现工作。 虽然,GoDaddy可能不会允许您在共享环境中更改PHP设置。
我们需要find修改PHP设置的替代方法
查看第40行的system/uri.php
,你会看到CMS尝试两种types的URI检测 – 第一种是PATH_INFO
,我们刚刚学到的将不起作用 – 另一种是REQUEST_URI
。
这基本上应该足够了 – 但是传递的URI的parsing会给你带来更多的麻烦,因为你可以传递给REQUEST_URI
variables的URI会强制parse_url()
返回URLpath – 这基本上可以让你回到零。
现在,实际上只剩下一个可能性 – 这正在改变CMS的核心。 URI检测部分是不够的。
将QUERY_STRING
添加到第40行的数组中作为system/uri.php
的第一个元素 ,并将.htaccess更改为如下所示:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [L]
这会将您请求的URI作为QUERY_STRING
给index.php
,并通过URI检测来find它。
另一方面,这使得在不更改核心文件之前更新CMS是不可能的,直到这个问题得到解决。 这太糟糕了…
需要更好的select?
find更好的CMS。
引用http://support.statamic.com/kb/hosting-servers/running-on-godaddy :
如果您想使用GoDaddy作为主机,并且您发现自己在控制面板中出现“没有指定input文件”错误,则需要使用以下规则在您的weboot中创build一个
php5.ini
文件:
cgi.fix_pathinfo = 1
最简单的答案只是一个线路的变化,你全部设置。
推荐为godaddy托pipe。
GoDaddy目前(2013年2月)支持使用PHP 5.2.x或更早版本修改某些帐户的FastCGI。 请参阅GoDaddy文章“ 禁用您的托pipe帐户中的FastCGI ”。
(就我而言,这显然是帮助将当前版本的LimeSurvey(2.0)转换为运行状态所必需的。)
在我的情况下,在php.ini open_basedirvariables中有一个错误。
我有同样的问题。 我所做的只是修改我的htacces文件,如下所示:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /crm/ Options +FollowSymLinks RewriteCond %{HTTP_HOST} ^mywebsite.com [NC] RewriteRule ^(.*)$ http://www.mywebsite.com/$1 [L,R=301] RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] RewriteRule ^index.php/(.*)$ [L] </IfModule>
添加php5.ini根本不起作用。 但请参阅GoDaddy本文中的“ 禁用FastCGI ”部分: http : //support.godaddy.com/help/article/5121/changing-your-hosting-accounts-file-extensions
将这些行添加到.htaccess文件(webroot和网站安装目录)中:
Options +ExecCGI addhandler x-httpd-php5-cgi .php
这节省了我一天! 干杯! 谢谢DragonLord !
它为我工作..添加.htaccess文件。 这将禁用Godaddy共享托pipe帐户上的FastCGI。
选项+ ExecCGI
addhandler x-httpd-php5-cgi .php
运行ulimit -n 2048
并重新启动php / php-fpm
我的解决scheme是删除我的助手文件中的空白。 错误列出了两个页面,CI会话文件和我的一个自定义助手。