44

我正在运行Anchor CMS,并且刚刚升级到 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 作为托管服务提供商。

4

12 回答 12

121

No input file specified是由于您的服务器上 PHP 的实现而显示的一条消息,在这种情况下表示 CGI 实现(可以用 验证)phpinfo()

现在,要正确解释这一点,您需要对系统如何使用 URL 有一些基本的了解。PATH_INFO根据您的 .htaccess 文件,您的 CMS 似乎希望 URL 作为变量传递。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.phpasQUERY_STRING并通过 URI 检测来找到它。

另一方面,这使得在不更改核心文件的情况下更新 CMS 是不可能的,直到这个问题得到修复。真烂……

需要更好的选择?
寻找更好的 CMS。

于 2013-01-29T08:05:01.510 回答
25

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

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

cgi.fix_pathinfo = 1

最好的简单答案只需更改一行即可。

推荐用于 godaddy 托管。

于 2013-09-23T16:18:50.830 回答
14

就我而言,php.ini open_basedir 变量中有错误。

于 2015-01-14T17:40:58.413 回答
6

我有同样的问题。我为解决这个问题所做的只是修改我的 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>
于 2015-04-27T19:49:16.833 回答
3

GoDaddy 目前(2013 年 2 月)支持为使用 PHP 5.2.x 或更早版本的某些帐户修改 FastCGI。请参阅 GoDaddy 文章“在您的主机帐户中禁用 FastCGI ”。
(在我的情况下,这显然对于帮助当前版本的 LimeSurvey (2.0) 进入运行状态是必要的。)

于 2013-02-07T23:20:32.923 回答
2

添加 php5.ini 根本不起作用。但请参阅GoDaddy 上这篇文章中的“禁用 FastCGI ”部分:http: //support.godaddy.com/help/article/5121/changeing-your-hosting-accounts-file-extensions

将这些行添加到 .htaccess 文件(webroot 和网站安装目录):

Options +ExecCGI
addhandler x-httpd-php5-cgi .php

它为我节省了一天!干杯! 感谢龙王

于 2013-11-13T10:09:04.367 回答
2

它对我有用..在 .htaccess 文件之上添加。它将禁用 Godaddy 共享主机帐户上的 FastCGI。

选项 +ExecCGI

addhandler x-httpd-php5-cgi .php

于 2015-02-12T09:44:38.493 回答
2

更新


之前的所有评论都经过我的测试,但没有解决方案。但我没有放弃。

解决方案

在我的 NGINX 配置中取消注释以下行

   [/etc/nginx/site-avaible/{sitename}.conf]

站点启用文件夹中应遵循相同的代码

  #fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;

并发表评论:

  fastcgi_param SCRIPT_FILENAME / www / {namesite} / public_html $ fastcgi_script_name;

我从原来的改变了几次:

   #fastcgi_pass unix: /var/php-nginx/9882989289032.sock;

回到这个:

   #fastcgi_pass 127.0.0.1:9007;

最后我找到了有效的方法......

   fastcgi_pass localhost: 8004;

我也推荐这些线路...

   #fastcgi_index index.php;
   #include fastcgi_params;

甚至 FastCGI 超时(仅用于提高性能)

  fastcgi_read_timeout 3000;

在此过程中,我检查了 NGINX 日志中的所有修改。(这非常重要,因为它显示了错误的参数。) 在我的情况下是这样的,但这取决于配置:

  error_log/var/log/nginx/{site}_error_log;

测试 NGINX 配置

 nginx -t

注意这是选项之一......好吧,在同一台服务器上,这个网站上不起作用的东西适用于其他人......所以请记住,设置取决于平台。

在这种情况下,它适用于 Joomla CMS。

于 2019-06-21T18:23:24.943 回答
1

ulimit -n 2048

并重启 php/php-fpm

于 2015-12-01T14:12:29.203 回答
1

禁用 PHP-FPM 解决了我的问题。

于 2020-06-30T17:53:43.757 回答
0

我的解决方案是删除我的一个帮助文件中的空白。该错误列出了涉及的两个页面,一个 CI 会话文件和一个我的自定义助手。

于 2013-10-29T23:18:00.877 回答
0

就我而言,我通过对接LocationMatch 指令中的规则来修复它

<LocationMatch "^/.">
    #your rewrite rules here
</LocationMatch>

/.匹配任何位置

我在.confApache NOT.htaccess文件的一个文件中有重写规则。

我不知道为什么这对我有用,这是我目前的设置

  • 阿帕奇 2.4 版
  • PHP 7.1
  • 操作系统 Centos 7
  • PHP-FPM
于 2019-06-28T23:17:19.030 回答