如何在普通 Apache 上 运行 Laravel 项目?

How to run Laravel project on normal Apache?

我有 Laravel 项目并且可以 运行 它与

php artisan serve

我正在 D:\Users\Dims\Design\MyApplication 目录中执行此命令。之后我可以在 http://localhost:8000 上看到网站并可以浏览它,尽管速度很慢。

现在我正在配置由 apache 服务的同一个地方:

<VirtualHost *:80>
    ServerAdmin webmaster@myapplication.app
    DocumentRoot "D:\Users\Dims\Design\MyApplication\public"
    ServerName myapplication.app
    ErrorLog "logs/myapplication-error.log"
    CustomLog "logs/myapplication-access.log" common
    <Directory />
        AllowOverride none
        Require all granted
        DirectoryIndex index.php
    </Directory>
</VirtualHost>

不是,我没有将应用程序指向项目的根目录,而是指向 public 目录。这使我能够打开站点的主页,但单击任何链接都会导致错误 404。

如果我发球

DocumentRoot "D:\Users\Dims\Design\MyApplication"

使用 Apache,我根本看不到主页,显示 403 forbidden。这可能是因为这个目录没有 index.php.

那么,是否可以使用 Apache 为 Laravel 项目提供服务?

如下所示设置 apache 服务器主机文件:

<VirtualHost *:80>
    ServerAdmin user@email.com
    DocumentRoot D:\Users\Dims\Design\MyApplication\public
    ServerName  exampledomain.com
    ServerAlias  www.exampledomain.com
    ErrorLog "C:/some_dir/example.error.log"
    CustomLog "C:/some_dir/example.access.log" combined
    <Directory "D:\Users\Dims\Design\MyApplication\public">
        Options -Indexes
        DirectoryIndex index.php index.html
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

现在您已将服务器名称设置为 exampledomain.com,您还需要在 windows 中设置主机 (DNS) 文件,以便您可以在 exampledomain.com 中输入浏览器并访问您的 laravel 项目。

正在编辑主机文件:

请按照以下步骤操作:

  • 按 Windows 键。
  • 在搜索字段中键入记事本。
  • 在搜索结果中,右键单击记事本,然后 select 运行 作为 管理员。
  • 从记事本打开以下文件:

    c:\Windows\System32\Drivers\etc\hosts

  • 对该文件进行以下更改。

在文件末尾添加以下行:

127.0.0.1        exampledomain.com www.exampledomain.com

单击“文件”>“保存”以保存您的更改。

我们在这里所做的是告诉 windows 当我们尝试访问 exampledomain.com 或 www.exampledomain.com 时,不要尝试通过互联网查找服务器,而是接受请求到本地机器本身 (127.0.0.1),它将在 return 为您的 laravel 项目提供服务。

您还可以在 wikihow 上找到另一种方法 -> http://www.wikihow.com/Install-Laravel-Framework-in-Windows

是的,绝对可以使用 Apache 为 Laravel 应用程序提供服务。要调试您的链接产生 404 错误的原因,您必须提供有关这些链接指向的 URL 的更多信息。打印 URL 时最好始终使用 Laravel 的 url()secure_url()route() 辅助函数。还要确认 Apache 模块 mod_rewrite 已启用 (Laravel Installation: Web Server Configuration)

如果在配置虚拟主机后您仍然无法访问您的 laravel 应用程序,但它与 artisan serve 一起工作正常,请检查您的 apache php 版本:

检查/etc/apache2/mods-enabled,如果php模块低于laravel规范要求的模块,更新它。就我而言:

$ a2dismod php7.0
$ a2enmod php7.2
$ service apache2 reload

解决方案位于:https://laracasts.com/discuss/channels/laravel/unexpected-illuminatesupportarrphp-on-line-388