未指定输入文件


No input file specified

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

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

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

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

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

我们需要找到修改 PHP 设置
的替代方案查看第 40 行的system/uri.php,您将看到 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]

这会将你请求index.php的 URI 作为QUERY_STRING传递,并具有 URI 检测来查找它。

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

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

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

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

cgi.fix_pathinfo = 1

最好的简单答案只需更改一行,您就可以设置好了。

推荐用于 GoDaddy 托管。

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

我遇到了同样的问题。我为解决此问题所做的只是像这样修改我的 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>

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

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

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

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

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

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

选项 +执行CGI

Addhandler X-httpd-php5-CGI .php

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


更新

<小时 />

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

溶液

取消注释我的 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的。

运行ulimit -n 2048

并重新启动php/php-fpm

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

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

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

/.匹配任何位置

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

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

  • 阿帕奇版本 2.4
  • 菲律宾比索 7.1
  • 操作系统 Centos 7
  • PHP-FPM

在我的例子中,在 Nginx 配置中给出根元素的正确路径。

将根 D:/fridoon/test/public; 更改为根 D:''fridoon''test''public;解决了这个问题。

然后重新启动 Nginx 和 php。

我在带有中文内容管理框架的窗口中使用Nginx Thinkcmf.com 并在公共目录中删除.user.ini文件,这导致了上述主题错误。