主页/PHP笔记/PHP问答/框架Laravel/如何在域名的子目录中运行Laravel

如何在域名的子目录中运行Laravel

Bug编译狮

Bug编译狮

在域名的子目录中运行 Laravel 通常涉及以下几个步骤:

  1. 创建子目录: 首先,你需要在主域名的根目录下创建一个新的子目录,例如 myapp

  2. 克隆 Laravel 框架: 使用 Composer 克隆 Laravel 框架到新创建的子目录中。

    composer create-project --prefer-dist laravel/laravel myapp
  3. 配置服务器: 根据你的服务器类型(如 Apache、Nginx 等),进行相应的配置。

    • Apache: 编辑你的虚拟主机配置文件(通常是 /etc/apache2/sites-available/000-default.conf/etc/httpd/conf.d/yourdomain.conf),添加以下内容:

      <VirtualHost *:80>
       ServerAdmin webmaster@localhost
       DocumentRoot /var/www/html/myapp/public
       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined
      
       <Directory /var/www/html/myapp/public>
           Options Indexes FollowSymLinks MultiViews
           AllowOverride All
           Require all granted
       </Directory>
      </VirtualHost>

      然后重新加载 Apache 配置:

      sudo systemctl reload apache2
    • Nginx: 编辑你的 Nginx 配置文件(通常是 /etc/nginx/sites-available/default),添加以下内容:

      server {
       listen 80;
       server_name yourdomain.com;
      
       root /var/www/html/myapp/public;
       index index.html index.htm;
      
       location / {
           try_files $uri $uri/ /index.php?$query_string;
       }
      
       location ~ .php$ {
           include snippets/fastcgi-php.conf;
           fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
       }
      }

      然后重新加载 Nginx 配置:

      sudo systemctl reload nginx
  4. 设置环境变量: 确保你的 Laravel 应用在新的子目录中正确运行。编辑 .env 文件并确保所有路径都指向正确的子目录。

  5. 迁移数据库: 如果你的应用需要连接到数据库,确保在子目录中执行迁移命令:

    cd myapp
    php artisan migrate
  6. 测试访问: 最后,尝试访问你的子目录 URL(例如 http://yourdomain.com/myapp)来确认 Laravel 是否成功部署在该子目录中。

通过以上步骤,你应该能够在域名的子目录中成功运行 Laravel 应用。

黑板Bug讲师

黑板Bug讲师

介绍

配置Laravel应用在域名下的子目录,允许在一个域下托管多个应用程序,每个都在其独特的路径上运行。这种设置对于组织项目、创建微服务架构或甚至只是为了简单方便都是至关重要的。本教程将指导您如何配置一个Laravel应用以在域名下的子目录中运行。

先决条件

具有配置子目录功能的域名。

访问已安装Apache或Nginx的服务器。

一个准备就绪的Laravel应用程序可以部署了。

步骤1:准备你的Laravel应用程序

在将Laravel应用程序部署到子目录之前,您需要确保您的应用程序的设置正确。首先,请确认以下几点: 环境变量:确保所有必要的环境变量(如数据库连接、配置文件路径等)已正确设置。 路由:检查路由是否指向正确的控制器和方法。 依赖项:确认所有的依赖项都已安装并且版本兼容。 配置文件:检查 .env 文件中的配置是否与实际环境匹配。 安全问题:确保没有潜在的安全风险,例如未授权访问或注入攻击。 如果一切正常,您可以继续将应用部署到指定的子目录。.env文件已正确配置,URL 设置也正确。以下是您的示例:APP_URL可能会看起来:

APP_URL=https://example.com/subdirectory

接下来,使用以下命令优化您的应用程序以供生产环境使用:

php artisan config:cache
php artisan route:cache
php artisan view:cache

步骤 2:配置您的 Web 服务器

不同的Web服务器需要不同的配置。以下为Apache和Nginx的配置说明。

Apache 配置

为了配置Apache,需要设置一个。.htaccess请在您的Laravel应用程序中上传文件。public目录。添加以下指令:

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteRule ^(.*)$ subdirectory/public/$1 [L]
</IfModule>

请记得更换。subdirectory请提供您希望托管Laravel应用的实际子目录名称。

Nginx 配置文件

对于Nginx,你需要编辑服务器块配置:

location /subdirectory {
    alias /path/to/laravel/public;
    try_files $uri $uri/ @laravel;
    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $request_filename;
    }
}

location @laravel {
    rewrite /subdirectory/(.*)$ /subdirectory/index.php?/$1 last;
}

该配置将您的子目录的请求指向了这里。public您的Laravel应用的目录结构。

步骤 3:Laravel 路由

在您的Laravel路由文件中(例如:routes/web.php)web.php这样做可以更容易地管理子目录:

Route::group(['prefix' => 'subdirectory'], function() {
    // Your application routes
});

请记得修改链接、资产调用和API端点,使其正确引用子目录。

步骤4:资产管理

使用Laravel的资产助手生成您的资产的URL。您可以修改助手,使其自动预置子目录。

{{ asset('css/app.css') }}

在上述示例中,Laravel 会正确地理解基础URL并添加资产的路径。

第5步:测试配置

非常重要的是要测试你的配置,这可以防止由于配置错误而导致的运行时错误。请访问。https://example.com/subdirectory查看您的申请正在运行。

诊断问题

如果您的申请没有按预期加载,您可以检查以下几点:

在Laravel框架目录权限问题。

Laravel的.env对不起,我不太明白您的意思,请您重新描述一下。APP_URL价值。

服务器配置文件用于处理拼写错误。

高级考虑因素

如果您的Laravel应用程序依赖于会话或缓存功能,您可能需要调整服务器的配置,以确保在子目录上下文中这些服务能够正确工作。建议使用Laravel支持的安全、健壮的会话和缓存驱动程序,在生产环境中适合使用。

规模和集群设置可能需要更加复杂的设计。在这种情况下,确保您的子目录驱动策略允许进行适当的反向代理配置、负载均衡以及潜在的水平扩展。

结论。

在子目录中运行Laravel可以简化您的Web主机环境并帮助组织域名的资源。按照本教程中的步骤进行操作,并确保所有配置正确无误,您的Laravel应用程序应能够在指定路径内顺畅运行。

长工码奴1523

长工码奴1523

要在 Laravel 应用程序的子目录中运行 PHP 脚本,请按照以下步骤操作:

  1. 首先,确保您已经安装了 Laravel 5.x 或更高版本。

  2. 在项目根目录下创建一个新的文件夹,例如 public/subdomains/example.com

  3. 将 Laravel 项目的源代码复制到新创建的子目录中,例如 subdomains/example.com/public.

  4. 在子目录中打开终端(命令行)并输入以下命令来激活该子目录:

    cd subdomains/example.com/
  5. 运行以下命令来启动服务器和配置环境变量:

    composer install --no-dev
    php artisan serve --environment=production
  6. 您现在可以在子目录下的任何 PHP 文件中执行 Laravel 命令,并且它们将被 Laravel 服务器处理。

  7. 如果需要,您可以添加新的 Laravel 环境变量并使用它们来运行脚本。例如,如果您想在子目录中使用环境变量 APP_ENV 设置为 “local”,可以这样做:

    export APP_ENV=local
  8. 在子目录中的 PHP 文件中使用这些环境变量。例如,在 app/Console/Commands/ExampleCommand.php 中设置 $env 变量:

    namespace AppConsoleCommands;
    
    use IlluminateConsoleCommand;
    use IlluminateSupportFacadesApp;
    
    class ExampleCommand extends Command
    {
       protected $signature = 'example {command}';
       protected $description = 'This is a sample command';
    
       public function handle()
       {
           // 使用 $env 变量替换默认值
           $env = App::environment();
           if ($env === 'local') {
               // 执行本地环境的命令
           } else {
               // 执行生产环境的命令
           }
       }
    }

通过以上步骤,您就可以在 Laravel 子目录中运行 PHP 脚本了。请注意,这仅适用于具有公共路径访问权限的子目录。如果您的应用有安全限制,您可能需要调整路径以满足要求。