web-dev-qa-db-ja.com

入力ファイルが指定されていません

Anchor CMS を実行しています。バージョン0.8にアップグレードしました。インストーラーを実行しようとすると、「入力ファイルが指定されていません」というエラーが表示されます。おそらく.htaccessの問題ではないかと思いますが、正しい設定がどうあるべきかはわかりません。

私のサイトは here にあります。

私の.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をホスティングプロバイダーとして使用しています。

33
Cole Roberts

入力ファイルが指定されていませんは、サーバー上のPHPの実装のために表示されるメッセージです。この場合、CGIの実装を示します(-で検証できます) phpinfo() )。

さて、これを適切に説明するには、システムがURLでどのように機能するかについて基本的な理解が必要です。 .htaccessファイルに基づいて、CMSはURLがPATH_INFO変数として渡されることを期待しているようです。 CGIとFastCGIの実装にはPATH_INFOがないため、URIを渡そうとするとPHPはそのメッセージで失敗します。

別の方法を見つける必要があります。

1つのオプションは、これを試して修正することです。 core php.ini directives のドキュメントを見ると、実装の仕組みを変更できることがわかります。ただし、GoDaddyではおそらく、共有環境のPHP設定を変更できません。

PHP設定の変更に代わるものを見つける必要があります
40行目でsystem/uri.phpを見ると、CMSが2種類のURI検出を試みていることがわかります-最初はPATH_INFOです。 REQUEST_URI

これは基本的には十分なはずです-しかし、渡されたURIの解析は、REQUEST_URI変数に渡すことができるURIが parse_url() を強制的に返すだけなので、さらに面倒ですURLパス-基本的にゼロに戻ります。

現在、実際に残っている可能性は1つだけです。それがCMSのコアを変えています。 URI検出部分が不十分です。

QUERY_STRINGを40行目の配列に最初の要素 in 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を見つけます。

106
Repox

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

GoDaddyをホストとして使用する場合、コントロールパネルで「入力ファイルが指定されていません」というエラーが発生する場合は、webootで次のルールでphp5.iniファイルを作成する必要があります。

cgi.fix_pathinfo = 1

一番簡単な答えは、1行変更するだけで、すべて設定できます。

godaddyホスティングに推奨。

22
chetan

私の場合、php.ini open_basedir変数にエラーがありました。

8
jbaylina

同じ問題がありました。この問題を修正するために行ったのは、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>
6
webicy

GoDaddyは現在(13年2月)PHP 5.2.x以前を使用する一部のアカウントのFastCGIの変更をサポートしています。 GoDaddyの記事「 ホスティングアカウントでFastCGIを無効にする 」を参照してください。
(私の場合、これは明らかに、LimeSurvey(2.0)の現在のバージョンを実行状態にするために必要です。)

3
DragonLord

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

これらの行を.htaccessファイル(webrootおよびWebサイトのインストールディレクトリ)に追加します。

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

1日節約できます!乾杯!ありがとう DragonLord

2
jondinham

ulimit -n 2048を実行します

Php/php-fpmを再起動します

2
Yarin Gold

.htaccessファイルの上に追加してくれました。 godaddy共有ホスティングアカウントでFastCGIを無効にします。

オプション+ ExecCGI

addhandler x-httpd-php5-cgi .php

2
user2060571

更新

以前のレビューはすべて私によってテストされましたが、解決策はありませんでした。しかし、私はあきらめませんでした。

解決

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

注意これはオプションの1つです...同じサーバー上で、このサイトで機能しなかったものが他のサイトで機能するので...設定はプラットフォームに依存することに注意してください。

この場合、Joomla CMS用でした。

0
PauloBoaventura

私にとっての解決策は、ヘルパーファイルの空白を削除することでした。エラーには、CIセッションファイルとカスタムヘルパーの2つのページが含まれています。

0
jason

私の場合、ルールを LocationMatch Directive の内側に突き当てて修正しました

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

/.anyの場所に一致します

Apacheの.confファイルの1つに書き換えルールがありますNOT .htaccessファイル。

これがなぜ私と一緒に働いたのか分かりません、これは私の現在の設定です

  • Apacheバージョン2.4
  • PHP 7.1
  • OS Centos 7
  • PHP-FPM
0
Accountant م