作曲家 Web 应用程序文件夹结构


Composer web application folder structure

我正在开发一个存在于 Web 根目录子目录中的应用程序。我的应用程序文件夹结构为:

website root/           
  |- index.php
  |- my-application/
       |- src/
           |- index.php
       |- tests/
       |- vendor/
       |- .gitignore
       |- composer.json
       |- phpunit.xml

根据这个堆栈溢出问题,src 目录应该在根目录中。 在这种情况下,这是不可能的。

除此之外,在

安装此应用程序时,应用程序的索引现在位于应用程序文件夹的 src 文件夹中。 这意味着 url 将是 localhost/application/src/index.php。

我该怎么做才能使应用程序索引文件的 url localhost/application/index.php?

我无法控制网络根目录。

您的源文件布局应始终包含一个包含所有必要源代码的"src"(或"lib"或任何您想要称呼它的内容)文件夹,可能是包含第三方代码的"供应商"文件夹,以及一个"webroot"文件夹,这是此设置中唯一将通过 Web 服务器公开的文件夹。 例如:

myapp/
    src/
        Acme/
            MyApp/
                ...
    vendor/
        ...
    webroot/
        index.php
        css/
            ...
        js/
            ...

您可以将此文件夹存储在您喜欢的任何位置。最后,您将 Web 服务器配置为myapp/webroot/ 提供服务。您可以通过以下方式执行此操作:

  1. 将该文件夹符号链接到 Web 服务器的文档根目录:

    /var/www/myapp -> /usr/local/myapp/webroot
    
  2. 使用 mod_rewrite 指令相应地重写请求:

    RewriteRule /theapp/(.*) /usr/local/myapp/webroot/$1
    
  3. 相应地配置 Web 服务器的核心,以提供应用目录中的某些 URL:

    Alias /theapp /usr/local/myapp/webroot
    # or whatever other way you prefer
    

您不需要以任何方式将文件存储在文件系统中,就像 URL 显示的那样。Web 服务器的工作是处理 URL 和文件和/或编程响应之间的此解析,它提供了许多工具,使其根据需要尽可能灵活。使用这些工具。