未指定输入文件

2020/12/15 07:41 · php ·  · 0评论

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

指定输入文件是由于服务器上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。

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

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

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上的“禁用FastCGI ”部分:http : //support.godaddy.com/help/article/5121/changing-your-hosting-accounts-file-extensions

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

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

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

它对.htaccess文件顶部的我。这将在Godaddy共享主机帐户上禁用FastCGI。

选项+ ExecCGI

addhandler x-httpd-php5-cgi .php


更新资料


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

在我的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>

/.匹配任何位置

我在.confApache NOT文件文件之一中具有重写规则.htaccess

我不知道为什么这与我合作,这是我当前的设置

  • Apache 2.4版
  • PHP 7.1
  • OS Centos 7
  • PHP-FPM

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

本文地址:http://php.askforanswer.com/weizhidingshuruwenjian.html
文章标签: ,   ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!