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 をどのように扱うかについて基本的な理解が必要です。.htaccess ファイルに基づいて、CMS は URL がPATH_INFO変数として渡されることを期待しているようです。CGI および FastCGI の実装はPATH_INFO利用できないため、URI を渡そうとすると、PHP はそのメッセージで失敗します。

代替案を見つける必要があります。

1 つのオプションは、これを試して修正することです。コア php.ini ディレクティブのドキュメントを調べると、実装の仕組みを変更できることがわかります。ただし、GoDaddy では、共有環境で PHP 設定を変更することはおそらく許可されません。

PHP 設定を変更する代わりの方法を見つける必要があります
40 行 目system/uri.phpを調べると、CMS が 2 種類の URI 検出を試みていることがわかりPATH_INFOますREQUEST_URI

基本的にはこれで十分なはずですが、渡された URI を解析すると、REQUEST_URI変数に渡すことができる URI が URL パスのみを返すように強制parse_url()されるため、さらに問題が発生します。これにより、基本的にゼロに戻ります。

さて、実際に残された可能性は 1 つだけです。それは、CMS のコアを変更することです。URI 検出部分が不十分です。

QUERY_STRING配列の 40 行目に最初の要素として追加し、.htaccess を次のようにsystem/uri.php変更します。

RewriteEngine On 

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

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

これにより、リクエストした URI が渡さindex.phpQUERY_STRING、URI 検出でそれが検出されます。

一方、これは、これが修正されるまで、コア ファイルを変更せずに CMS を更新することを不可能にします。それはひどい...

より良いオプションが必要ですか?
より良い CMS を見つけてください。

于 2013-01-29T08:05:01.510 に答える
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月)、PHP5.2.x以前を使用する一部のアカウントのFastCGIの変更をサポートしています。GoDaddyの記事「ホスティングアカウントでのFastCGIの無効化」を参照してください。
(私の場合、これはLimeSurvey(2.0)の現在のバージョンを実行状態にするために明らかに必要です。)

于 2013-02-07T23:20:32.923 に答える
2

それは私のために働いた..htaccessファイルの上に追加します。Godaddy 共有ホスティング アカウントで FastCGI を無効にします。

オプション +ExecCGI

addhandler x-httpd-php5-cgi .php

于 2015-02-12T09:44:38.493 に答える
2

php5.ini を追加してもまったく機能しません。ただし、GoDaddy に関するこの記事の「FastCGI を無効にする 」セクションを参照してください: http://support.godaddy.com/help/article/5121/ching-your-hosting-accounts-file-extensions

次の行を .htaccess ファイル (webroot と Web サイトのインストール ディレクトリ) に追加します。

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

それは私を1日節約します!乾杯!ありがとうドラゴンロード

于 2013-11-13T10:09:04.367 に答える
1

走るulimit -n 2048

そして、php/php-fpmを再起動します

于 2015-12-01T14:12:29.203 に答える