AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 760461
Accepted
Raffael
Raffael
Asked: 2016-03-01 02:53:24 +0800 CST2016-03-01 02:53:24 +0800 CST 2016-03-01 02:53:24 +0800 CST

如何找出网站代码所在的位置?

  • 772

事实:

  • 有一个网站
  • 该网站可通过 www.example.org 访问
  • 有一个 EC2 实例很可能保留该网站
  • 服务器是 Apache
  • 服务器操作系统是 Ubuntu
  • 我拥有对服务器的完全访问权限(和 sudo 权限)
  • 服务器是一个巨大的混乱

问题是我不知道在哪里 - 简单地说 - 找到加载的 index.html/index.php。

如何确定在哪里可以找到网站的 PHP 和 HTML 代码?是否有解决这个问题的系统方法?

apache-2.2
  • 6 6 个回答
  • 5922 Views

6 个回答

  • Voted
  1. Best Answer
    ALex_hha
    2016-03-01T03:05:53+08:002016-03-01T03:05:53+08:00

    首先,您应该检查服务器上托管了哪些网站

    # 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 代码触发时),我认为没有简单的方法可以找到这种情况。

    • 54
  2. the_velour_fog
    2016-03-01T02:57:08+08:002016-03-01T02:57:08+08:00

    尝试使用查找

    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
    

    如果网站定义了 apache VHOST,它可能会找到配置文件,然后在该文件中查找"documentroot"它应该会告诉您源代码的位置

    • 3
  3. Centimane
    2016-03-01T11:29:05+08:002016-03-01T11:29:05+08:00

    另一种可用于调试网站(或任何相关进程)的方法是使用lsof(可能不在路径上,常见于/sbin/lsof)

    lsof -s [PID]将列出给定进程可以处理的所有文件,并且有助于准确查看正在使用的文件(这包括您的 html/php 文件,以及站点需要的日志文件和库)

    • 2
  4. krishna chandra
    2016-03-01T03:05:23+08:002016-03-01T03:05:23+08:00

    请前往

    cd /etc/apache2/站点可用/

    在这里您将找到您的配置文件(即:000-default.conf)

    请使用打开此文件/打开您的配置文件

    vi 000-default.conf

    在那里你会找到 DocumentRoot。那是你网站的代码

    这是默认的 conf 文件,同样您将需要一些 conf 详细信息,请检查这些。

    • 1
  5. RedGrittyBrick
    2016-03-02T09:07:42+08:002016-03-02T09:07:42+08:00

    我不知道在哪里......找到加载的 index.html/index.php。

    查找页面源文件

    一种方法是浏览该站点以找到一个更独特的页面 - 比如说 newcontactform.php - 理想情况下,该页面不太可能出现在同一服务器托管的其他站点中。

    然后你可以试试

    locate newcontactform.php
    

    如果失败,请遵循

    find / -name newcontactform.php
    

    这应该会产生一个可管理的小候选人名单。

    然后,您可以检查文件,进行比较,如有必要,尝试进行小的更改(例如插入 HTML 注释)以验证文件确实生成了页面。

    查找配置

    有时配置文件在ps命令的输出中很明显。最坏的情况是ps -ef | grep -e 'apache|httpd',更创造性地使用ps选项可能值得探索。

    您可以httpd.conf在 Ubuntu 和 Apache httpd 项目(可能不同)的典型位置中查找,或者仅使用locate和find如上所述。

    有时主配置文件是指虚拟主机的其他配置文件。您可以通过识别主配置文件来解决这个问题。

    慢性病例

    有时,旧服务器运行各种网络服务器守护进程。在这种情况下,可能需要一段时间才能找到它们并确定它们的配置文件在哪里。上述技术的组合最终应该会成功。

    您可以使用 netstat -lntp. 通常,定位二进制文​​件是指向包含配置文件的目录树的有用指针。

    • 1
  6. Georgi Tsvetanov Tsenov
    2016-03-03T06:41:07+08:002016-03-03T06:41:07+08:00

    您可以在 Web 服务器的 (apache) 配置文件中检查您正在寻找的域的虚拟主机 - httpd.conf(很可能位于 /etc/)只需打开文件并滚动它,直到找到VirtulaHost指令您的域,在那里您将看到DocumentRoot指令 - 这是您网站的文档根目录,您可以在其中找到应用程序的文件。

    • 1

相关问题

  • Apache Django Mod_Wsgi - 自动重新加载应用程序

  • Apache:对多个虚拟主机使用相同的目录指令

  • Apache 上的子域不工作 - 找不到服务器

  • PHP 作为 CGI 还是 Apache 模块?

  • 避免将某些丢失的文件记录到 Apache2 错误日志中

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve