すべてのプロダクト
Search
ドキュメントセンター

:ECS Web サイトでの "no input file specified" エラーの解決

最終更新日:Oct 31, 2025

原因

このエラーは通常、Web サーバーが指定された PHP ファイルまたはスクリプトを見つけられない場合に発生します。考えられる原因は次のとおりです。

  • open_basedir の制限: Web サイトのルートディレクトリにある .user.ini ファイルをチェックして、open_basedir の構成に必要なすべてのディレクトリへのパスが含まれていることを確認します。

  • 不正な書き換えルールの構成: Web サイトの構成ファイル内の書き換え (疑似静的) ルールをチェックして、リクエストが存在しない PHP ファイルに誤ってリダイレクトされていないことを確認します。

  • 不正な PHP ハンドラー構成: Web サイトの構成ファイル内の PHP ランタイムモード設定をチェックして、Web サーバーがリクエストを PHP インタープリターに渡すことを確認します。

解決策

Linux

以下のステップでは、Alibaba Cloud Linux 3 を例として使用します。

  1. ECS インスタンスにログインします。

    1. ECS コンソール - インスタンス に移動します。上部のナビゲーションバーで、ターゲットリージョンとリソースグループを選択します。

    2. ターゲットインスタンスの詳細ページに移動します。[接続] をクリックし、[Workbench] を選択します。ページ上のプロンプトに従ってターミナルにログインします。

  2. open_basedir の制限を確認します。

    1. Web サイトのディレクトリで、隠し構成ファイル .user.ini があるか確認します。

      sudo ls -la <website_directory>
      たとえば、Web サイトのディレクトリが /www/wwwroot/www.abc.com/ の場合、sudo ls -la /www/wwwroot/www.abc.com/ を実行します。
      • ファイルが存在する場合は、次のステップに進みます。

      • ファイルが存在しない場合、この制限は適用されません。構成ファイルの変更 に進みます。

    2. open_basedir の設定を確認します。

      .user.ini ファイルで、open_basedir で始まる行を見つけます。ディレクトリリストにターゲット Web サイトの完全なルートパスが含まれているか確認します。

      たとえば、Web サイトのディレクトリが /www/wwwroot/www.abc.com であるにもかかわらず、.user.ini ファイルに open_basedir=/www/wwwroot/www.test.com/:/tmp/ が含まれている場合は、不足しているパスを追加します。
  3. 構成ファイルを変更します。

    Apache

    1. .htaccess ファイルを確認して修正します。

      Web サイトのルートディレクトリに移動し、.htaccess ファイルを確認します。存在する場合、RewriteRule 行が次のように構成されていることを確認します。

      このルールにより、リクエストが index.php にリダイレクトされるようになります。
      RewriteRule ^(.*)$ /index.php?/$1 [L]
    2. Apache サービスを再起動します。

      sudo systemctl restart httpd

    Nginx

    1. php.ini 構成を確認して修正します。

      /etc/php.ini ファイルを編集し、cgi.fix_pathinfo パラメーターを 1 に設定します。

      デフォルト値は 1 です。この設定により、PHP インタープリターが正しいファイルパスを見つけられるようになり、互換性が向上します。
    2. fastcgi.conf 構成を確認して修正します。

      /etc/nginx/fastcgi.conf ファイルを編集し、次の構成が含まれていることを確認します。この構成により、Web サーバーがリクエストを PHP インタープリターに渡すことが保証されます。

      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      fastcgi_param DOCUMENT_ROOT $document_root;
    3. Nginx サービスを再起動します。

      sudo systemctl restart nginx
  4. Web サイトへのアクセスを確認します。

    これらのステップを完了したら、Web サイトをリフレッシュして問題が解決されたことを確認します。

Windows

以下のステップでは、インターネットインフォメーションサービス (IIS) を搭載した Windows Server 2022 を例として使用します。

  1. ECS インスタンスにログインします。

    1. ECS コンソール - インスタンス に移動します。上部のナビゲーションバーで、ターゲットリージョンとリソースグループを選択します。

    2. ターゲットインスタンスの詳細ページに移動し、[接続] をクリックして [Workbench] を選択します。接続方法を [ターミナル] に設定し、ユーザー名とパスワードを入力して、グラフィカルターミナルページにログインします。

  2. open_basedir の制限を確認します。

    1. Web サイトのディレクトリに隠し構成ファイル .user.ini が存在するかどうかを確認します。

      ファイルエクスプローラーのメニューで、[表示] をクリックし、[隠しファイル] チェックボックスを選択します。

    2. open_basedir の設定を確認します。

      .user.ini ファイルで、open_basedir で始まる行を見つけます。ディレクトリリストにターゲット Web サイトの完全なルートパスが含まれているか確認します。

      たとえば、Web サイトのディレクトリが C:\inetpub\wwwroot\mywebsite であるにもかかわらず、.user.ini ファイルに open_basedir = "C:\inetpub\wwwroot\abc" が含まれている場合、パスが正しくないため修正する必要があります。
  3. IIS の PHP ハンドラー構成を確認します。

    1. php.ini ファイルを編集します。

      1. doc_root をコメントアウトします。

        doc_root フィールドを含む行の先頭にセミコロン (;) を追加してコメントアウトします。image

      2. cgi.force_redirect を変更します。

        cgi.force_redirect = 1 を含む行の先頭からセミコロン (;) を削除し、その値を `0` に変更します。この変更によりセキュリティチェックが無効になり、PHP が IIS で実行できるようになります。image

    2. IIS サービスを再起動します。

      Win+R を押し、PowerShell と入力して Enter を押します。PowerShell ウィンドウで、次のコマンドを実行して IIS サービスを再起動します。

      iisreset /noforce
  4. Web サイトへのアクセスを確認します。

    これらのステップを完了したら、Web サイトに再度アクセスして問題が解決されたことを確認します。