【问题标题】:Laravel can't go to projects url when move it on live serverLaravel 在实时服务器上移动时无法转到项目 url
【发布时间】:2015-03-04 06:59:49
【问题描述】:

也许有人知道我的问题的解决方案。

在 localhost 中一切正常。

我买了 vps 服务器,在里面安装了 Ubuntu 和 LAMP 堆栈。

现在将所有文件从本地主机复制到实时服务器,抛出 ftp。

我在网络浏览器中编写 ip/public 并且我看到我的项目我的路径运行良好,但是如果我想访问 ip/public/login 之类的 url,它会引发 404 错误。 (现在只能使用公共地址)

公共文件夹中的.htaccess 很好。

现在我发现如果我写 ip/public/index.php/login 它运行良好,但我需要它像在 localhost 中一样运行

【问题讨论】:

  • 您的网络文件夹是否有权限644
  • /var/www/html 有 755 权限
  • 您的服务器上的 .htaccess 是否启用?
  • lukaskeiter 怎么查,我在 RewriteEngine On 之前尝试在 /public/.htaccess 文件中写入 smth,当我去公共地址时我没有收到任何错误,是不是很好?跨度>

标签: php laravel lamp


【解决方案1】:

尝试创建一个指向您的公共文件夹的符号链接并将其用作项目的 URL。例如,我的/var/www/html 文件夹中有一个名为inspections 的项目。如果我尝试访问http://url/inspections,则会收到错误消息:

403 Forbidden: You don't have permission to access /inspections/ on this server.

但是,调用此命令后:

ln -s /var/www/html/inspections/public /var/www/html/insp

导航到http://url/insp 页面显示正常,一切正常。

要记住的另一件事是app/storage 需要(至少)具有写入权限才能使 Laravel 正常工作。我通常只是这样做:

sudo chmod 777 -R app/storage

激活所有权限并从那里开始。希望对您有所帮助!

【讨论】:

  • 我试着写了 ln -s /var/www/html/public /var/www/html ,但它说 ln: failed to create symbolic link '/var/www/html/public':文件存在
  • 你的 laravel 项目的 var/www/html/ 文件夹中应该有一个子文件夹。所以ln -s /var/www/html/name_of_project/public /var/www/html/new_name
  • 但是为什么子文件夹应该放在哪里呢?我在我的 vps 中只使用一个站点?为什么它不能在 www/html 文件夹中?
  • 我从来没有把 Laravel 项目设置为/var/www/html...老实说我不知道​​这会如何工作。我想我假设你为你的 Laravel 项目创建了一个文件夹并将它放在你的 web 根目录 /var/www/html
【解决方案2】:

您是否还检查了此服务器上是否启用了 mod_rewrite? 也许没有为此文件夹定义覆盖?

试试:

<?php in_array('mod_rewrite', apache_get_modules()); ?>

或者这个:

<?php die("Enabled: ". strpos(shell_exec('/usr/local/apache/bin/apachectl -l'), 'mod_rewrite') !== false); ?>

并检查您的虚拟主机文件中是否启用了 Allowoverride。 文件的位置取决于操作系统和结构。

它应该看起来像这样:

Options Indexes FollowSymLinks
AllowOverride All
Require all granted

【讨论】:

  • 试试你的代码,所以第二个代码输出是 1,所以我打开了 fink 模式
  • 那很好。你自己设置了apache和服务器吗?如果启用了 Allowoverriding,请检查您的虚拟主机(位置取决于您的操作系统和结构)配置。我在答案中添加了代码,以向您展示 AllowOverride 的外观
  • 我正在寻找但找不到,我使用的是 Apache 2.4.7 Ubuntu
  • 在你的 ssh 控制台试试这个:ls /etc/apache2/sites-available/ 如果你没有创建自己的虚拟主机,它应该是“默认”或“000-默认”
  • 000-default.conf 和 default-ssl.conf 在哪里
猜你喜欢
  • 2017-04-27
  • 1970-01-01
  • 2021-12-17
  • 1970-01-01
  • 1970-01-01
  • 2016-12-04
  • 1970-01-01
  • 2022-11-11
  • 1970-01-01
相关资源
最近更新 更多