Col*_*rts 38 php apache .htaccess anchor-cms
我正在运行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>
Run Code Online (Sandbox Code Playgroud)
如果有帮助,我也使用GoDaddy作为托管服务提供商.
Rep*_*pox 107
由于在服务器上实现了PHP,因此指定的No输入文件是您显示的消息,在这种情况下表示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]
Run Code Online (Sandbox Code Playgroud)
这会将您请求的URI传递给URI index.php
,QUERY_STRING
并通过URI检测来查找它.
另一方面,这使得在不更改核心文件的情况下更新CMS是不可能的,直到修复为止.那糟透了......
需要更好的选择吗?
找一个更好的CMS.
小智 22
引用http://support.statamic.com/kb/hosting-servers/running-on-godaddy:
如果您想使用GoDaddy作为主机,并且您发现自己在控制面板中收到"未指定输入文件"错误,则需要
php5.ini
使用以下规则在weboot中创建一个文件:
cgi.fix_pathinfo = 1
最简单的答案只需一行更改,你就完成了.
推荐给godaddy托管.
我有同样的问题.我所做的就是修复我的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>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
242214 次 |
最近记录: |