未指定输入文件

2022-08-30 11:22:19

我正在运行Anchor CMS,我刚刚升级到0.8版本。当我尝试运行安装程序时,我收到“未指定输入文件”错误。我相信这很可能是一个.htaccess问题,但我不确定正确的设置应该是什么。

我的网站可以在这里找到。

My .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作为托管服务提供商。


答案 1

“未指定输入文件”是由于在服务器上实现 PHP 而显示的消息,在本例中表示 CGI 实现(可以使用 phpinfo()进行验证)。

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

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

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

我们需要找到修改PHP设置
的替代方法 在第40行中,您将看到CMS尝试了两种类型的URI检测 - 第一种是 ,我们刚刚了解到这不起作用 - 另一种是.system/uri.phpPATH_INFOREQUEST_URI

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

现在,实际上只剩下一种可能性 - 这改变了CMS的核心。URI 检测部分不足。

添加到第 40 行的数组中,作为 中的第一个元素,并将 .htaccess 更改为如下所示:QUERY_STRINGsystem/uri.php

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.*)$ index.php?/$1 [L]

这会将你请求的 URI 传递给它,并让 URI 检测来查找它。index.phpQUERY_STRING

另一方面,这使得在修复此问题之前,无法在不更改核心文件的情况下更新CMS。糟糕透了。。。

需要更好的选择?
找到更好的内容管理系统。


答案 2

引用 http://support.statamic.com/kb/hosting-servers/running-on-godaddy

如果您想将 GoDaddy 用作主机,并且发现自己在控制面板中收到“未指定输入文件”错误,则需要使用以下规则在 weboot 中创建一个文件:php5.ini

cgi.fix_pathinfo = 1

最好的简单答案只需一行更改,您就一切就绪。

推荐给godaddy托管。


推荐