事実:
問題は、ロードされるindex.html/index.phpを見つける場所がわからないことです。
WebサイトのPHPおよびHTMLコードがどこにあるかを見つけるにはどうすればよいですか?この問題への体系的なアプローチはありますか?
最初に、サーバーでホストされているWebサイトを確認する必要があります
# apachectl -t -D DUMP_VHOSTS
次に、サイトが見つかったら、オプションのDocumentRootに対応する構成ファイルを確認します。例えば
# apachectl -t -D DUMP_VHOSTS
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server 192.168.88.87 (/etc/httpd/conf.d/192.168.88.87.conf:1)
port 80 namevhost 192.168.88.87 (/etc/httpd/conf.d/192.168.88.87.conf:1)
port 80 namevhost gl-hooks.example.net (/etc/httpd/conf.d/hooks.conf:1)
alias example.net
alias www.example.net
ウェブサイトexample.netがどこにあるか知りたい
# grep DocumentRoot /etc/httpd/conf.d/hooks.conf
DocumentRoot /vhosts/gl-hooks.example.net/
# cd /vhosts/gl-hooks.example.net/
# ls -la
total 4484
drwxr-xr-x 6 Apache apache 4096 Feb 10 11:59 .
drwxr-xr-x 14 root root 4096 Feb 23 08:54 ..
-rw-r--r-- 1 root root 1078 Dec 19 09:31 favicon.ico
-rw-r--r-- 1 Apache apache 195 Dec 25 14:51 .htaccess
-rw-r--r-- 1 Apache apache 98 Dec 7 10:52 index.html
エイリアスとリダイレクト/書き換えの監視も行う必要があります
また、エイリアスディレクティブにも注意を払う必要があります。たとえば、次の設定で
<VirtualHost *:80>
ServerName example.net
ServerAlias www.example.net
...
DocumentRoot /vhosts/default/public_html/
Alias /api/ /vhosts/default/public_api/
...
</VirtualHost>
http://example.net/some.file.html にアクセスすると、Apacheは/ vhosts/default/public_html /でファイルを検索し、同時に http: //example.net/api/some.file.html ファイルは/ vhosts/default/public_api /で検索されます。
書き換え/リダイレクト、特にプログラム(リダイレクトがphpコードによってトリガーされた場合)については、そのようなケースを見つける簡単な方法はないと思います。
検索を使用してみてください
find / -type f \( -iname "*index.html*" -o -iname "*index.php*" \) 2> /dev/null
それ以外の場合は、ApacheがUbuntuリポジトリからインストールされていると想定して、/etc/Apache2/sites-available
を確認します。
grep -niR "thedomainname" /etc/Apache2/sites-available
WebサイトにApache VHOSTが定義されている場合は、構成ファイルが見つかる可能性があります。そのファイルで"documentroot"
を確認すると、ソースコードの場所がわかります。
Webサイト(またはその問題に関するプロセス)のデバッグに役立つ別の方法は、lsof
を使用することです(これはパス上にない可能性があり、通常/sbin/lsof
にあります)
lsof -s [PID]
は、指定されたプロセスがハンドルを持っているすべてのファイルを一覧表示し、使用されているものを正確に確認するのに役立ちます(これには、html/phpファイル、サイトに必要なログファイルとライブラリが含まれます)
に行ってください
cd/etc/Apache2/site-avaliable /
ここに設定ファイルがあります(例:000-default.conf)
このファイルを開くか、次を使用して構成ファイルを開いてください
vi 000-default.conf
そこにDocumentRootがあります。これがWebサイトのコードです。
これは同様にデフォルトのconfファイルです。いくつかのconfの詳細も確認してください。
Webサーバーの(Apache)構成ファイルで探しているドメインの仮想ホストを確認できます-httpd.conf(おそらく/ etc /にあります)ファイルを開いてスクロールするだけですドメインのVirtulaHostディレクティブが見つかるまで、そこにDocumentRootディレクティブが表示されます。これは、Webサイトのドキュメントルートディレクトリであり、アプリケーションのファイルを見つける場所です。
ロード先のindex.html/index.phpをどこで見つけるかわかりません
1つの方法は、サイトを参照してよりユニークなページを見つけることです。たとえば、newcontactform.phpとしましょう。理想的には、同じサーバーでホストされている他のサイトには表示されないものです。
その後、試すことができます
locate newcontactform.php
それが失敗した場合は、
find / -name newcontactform.php
これにより、扱いやすい候補のリストが作成されます。
次に、ファイルを検査し、diffを実行し、必要に応じて小さな変更(HTMLコメントの挿入など)を試行して、ファイルが実際にページを生成することを確認します。
ps
コマンドの出力に構成ファイルが見つかることがあります。最悪のケースはps -ef | grep -e 'Apache|httpd'
ですが、ps
オプションをよりクリエイティブに使用することは検討に値するかもしれません。
UbuntuとApache httpdプロジェクト(異なる場合があります)の一般的な場所でhttpd.conf
を探すか、上記のようにlocate
とfind
を使用します。
メインの設定ファイルがvhostsの他の設定ファイルを参照する場合があります。これは、メインの構成ファイルを識別することで解決できます。
時々、古いサーバーは様々なウェブサーバーデーモンを実行します。その場合、それらすべてを見つけて、それらの構成ファイルがどこにあるかを見つけるのに時間がかかることがあります。上記の手法の組み合わせは、最終的には成功するはずです。
netstat -lntp
を使用すると、ポート80などでリッスンしているプログラムを見つけることができます。多くの場合、バイナリを見つけることは、設定ファイルを含むディレクトリツリーへの便利なポインタです。