【问题标题】:Deploying laravel Rest API using apache使用 apache 部署 laravel Rest API
【发布时间】:2018-06-20 12:21:20
【问题描述】:

我正在尝试在服务器上部署我的项目,它是一个 REST API。服务器正在运行 apache 并且工作正常(我使用 hello world 脚本对其进行了测试)。

我的项目在 /var/API 中。 我已将我的公用文件夹从我的项目移动到我的文档根目录 (/var/www/)。 我已经从我的 laravel 项目中更改了我的 index.php 文档,并将它与我的 public/.htaccess 一起添加到我的文档根目录中。我遇到的问题在于我在下面发布的更改后的index.php 文件。

如果我运行 get API 调用,我的浏览器会出现 404 错误。如果我只是为服务器本身运行 ip,我会收到 500 错误。

<?php

define('LARAVEL_START', microtime(true));

require __DIR__.'/var/API/vendor/autoload.php';

$app = require_once __DIR__.'/var/API/bootstrap/app.php';

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()
);

$response->send();

$kernel->terminate($request, $response);

【问题讨论】:

  • 我们是否应该猜测错误是什么?
  • 哎呀抱歉我更新了答案
  • 尝试删除 __DIR__ 只是 require '/var/API/vendor/autoload.php';require_once '/var/API/bootstrap/app.php';
  • 运气不好。我想我可能已经找到了解决办法。我需要运行php artisan route:cache,但是当我运行时出现错误Unable to prepare route [api/user] for serialization. Uses Closure.我正在修复它。
  • 修复了php artisan route:cache的问题,但没有解决问题

标签: php laravel apache web-deployment


【解决方案1】:

我已将我的公用文件夹从我的项目移动到我的文档根目录

你不应该从项目中移动public 文件夹,它会破坏很多东西。保持项目结构不变,并将您的 apache DocumentRoot 更改为指向 public 文件夹。

我会将项目从 /var/API 移动到 /var/www/API 并将 apache 配置中的 DocumentRoot 更改为 /var/www/API/public

【讨论】:

  • 这是有道理的。这样我就不需要更改我的index.php。正确的?我这样做了,但我仍然有同样的错误。我还必须更改我的一些代码并运行。 $ php composer dumpautoload -o $ php artisan config:cache $ php artisan route:cache
  • 是的,您不需要编辑index.php,因为默认情况下它希望在public 文件夹旁边找到vendor 文件夹。此外,如果您检查了文件 bootstrap/app.php,您将看到 Laravel 定义了应用程序的许多部分所依赖的项目的根目录。这就是为什么你必须运行 config:cachecomposer dumpautoload
猜你喜欢
  • 2017-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-05
  • 2017-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多