我正在运行AnchorCMS,而我刚刚升级到0.8版。尝试运行安装程序时,出现“未指定输入文件”错误。我相信这很可能是.htaccess问题,但是我不确定应该使用什么正确的设置。
我的网站可以在这里找到。
我的.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用作托管服务提供商。
未 指定输入文件 是由于服务器上PHP的实现而向您显示的消息,在这种情况下,这表示CGI的实现(可以通过验证phpinfo())。
phpinfo()
现在,要正确解释这一点,您需要对系统如何与URL一起使用有一些基本的了解。根据您的.htaccess文件,您的CMS似乎希望该URL作为PATH_INFO变量传递。CGI和FastCGI实现不可PATH_INFO用,因此当尝试传递URI时,PHP失败并显示该消息。
PATH_INFO
我们需要找到一个替代方案。
一种选择是尝试解决此问题。查看核心php.ini指令的文档,您会发现可以更改实现的工作方式。尽管GoDaddy可能不允许您在共享环境中更改PHP设置。
我们需要找到修改PHP设置一个替代 展望system/uri.php第40行,你会看到,CMS尝试两种类型的URI的检测-第一个是PATH_INFO,我们刚刚得知将无法正常工作- 另一个是REQUEST_URI。
system/uri.php
REQUEST_URI
这基本上就足够了- 但是传递的URI的解析会给您带来更多麻烦,因为您可以传递给REQUEST_URI变量的URI会强制parse_url()仅返回URL路径- 基本上使您返回零。
parse_url()
现在,实际上只剩下一种可能性-这正在改变CMS的核心。URI检测部分不足。
将QUERY_STRING第40行的数组添加为其中 的第一个元素 ,system/uri.php并将.htaccess更改为如下所示:
QUERY_STRING
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [L]
这会将您请求的URI传递为index.phpas QUERY_STRING,并进行URI检测以找到它。
index.php
另一方面,这使得在不解决核心文件问题的情况下,不更改核心文件就无法更新CMS。糟透了…
需要更好的选择吗? 查找更好的CMS。