一尘不染

未指定输入文件

php

我正在运行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用作托管服务提供商。


阅读 1824

收藏
2020-05-26

共1个答案

一尘不染

指定输入文件
是由于服务器上PHP的实现而向您显示的消息,在这种情况下,这表示CGI的实现(可以通过验证phpinfo())。

现在,要正确解释这一点,您需要对系统如何与URL一起使用有一些基本的了解。根据您的.htaccess文件,您的CMS似乎希望该URL作为PATH_INFO变量传递。CGI和FastCGI实现不可PATH_INFO用,因此当尝试传递URI时,PHP失败并显示该消息。

我们需要找到一个替代方案。

一种选择是尝试解决此问题。查看核心php.ini指令的文档,您会发现可以更改实现的工作方式。尽管GoDaddy可能不允许您在共享环境中更改PHP设置。

我们需要找到修改PHP设置一个替代
展望system/uri.php第40行,你会看到,CMS尝试两种类型的URI的检测-第一个是PATH_INFO,我们刚刚得知将无法正常工作-
另一个是REQUEST_URI

这基本上就足够了-
但是传递的URI的解析会给您带来更多麻烦,因为您可以传递给REQUEST_URI变量的URI会强制parse_url()仅返回URL路径-
基本上使您返回零。

现在,实际上只剩下一种可能性-这正在改变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传递为index.phpas QUERY_STRING,并进行URI检测以找到它。

另一方面,这使得在不解决核心文件问题的情况下,不更改核心文件就无法更新CMS。糟透了…

需要更好的选择吗?
查找更好的CMS。

2020-05-26