1. ホーム
  2. php

[解決済み] 入力ファイルが指定されていない

2022-02-22 02:05:37

質問

私は アンカー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 が 2 種類の URI 検出を試みていることがわかります - 1 つ目は PATH_INFO これは、先ほどうまくいかないことがわかったのですが、もうひとつは REQUEST_URI .

基本的にはこれで十分なのですが、渡された URI のパースでさらに問題が発生します。 REQUEST_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.php として QUERY_STRING で、それを見つけるためのURI検出をさせる。

一方、これが修正されるまで、コアファイルを変更せずにCMSをアップデートすることは不可能です。最悪だ...。

もっと良い方法がありますか?
より良いCMSを探す