当前位置: 首页 > 知识库问答 >
问题:

共享主机上的Laravel 5-错误的公共路径()

黎征
2023-03-14

我将一个Laravel5项目部署到一个共享托管帐户,将应用程序文件放在www文件夹之外,只将公用文件夹放在www文件夹之内。正如这里所解释的,最好的答案是:Laravel4和使用FTP部署应用程序的方法。。。没有3。因为这个文件在Laravel 5中不存在。

现在,当我在控制器内调用public_path()时,我会在www/public之外而不是www/public之外得到类似于我的appfiles的东西。有人知道我为什么没有找到正确的路吗?我能换个地方吗?谢谢

共有3个答案

通宾白
2023-03-14

有许多解决方案,如更改index.php或接受的ioc容器。

在我看来,最好的解决方案是在这个SO问题中描述的: Laravel 5更改public_path()

为什么它比其他解决方案更好?因为它适用于常规http请求,所以使用artisaná和phpunit进行测试!例如,对索引的更改。php只适用于http请求,但在使用PHPunit时会导致失败(在我的例子中是:file(…)未在资产清单中定义)。

该解决方案的简要概述:步骤1:在文件:bootstrap/app中。php将$app变量的第一个声明更改为:

$app = new Illuminate\Foundation\Application(
    realpath(__DIR__.'/../')
);

到:

$app = new App\Application(
    realpath(__DIR__.'/../')
);

这指向您自己的自定义Application类,我们将在第2步中创建该类。

步骤2:创建文件应用程序。应用程序文件夹中的php:

<?php namespace App;

class Application extends \Illuminate\Foundation\Application
{
   public function publicPath()
   {
       return $this->basePath . '/../public_html';
   }
}

一定要根据自己的需要改变路径。该示例假设目录结构如下:
°laravel_应用程序
°°应用程序
°°引导程序
°°°配置
°
°公共html

在OP的情况下,路径可能应该是

return $this->basePath . '/../www/public';

(从laravel_app向上一个,然后向下进入www/Public)

储承
2023-03-14
$app->bind('path.public', function() {
  return __DIR__;
});

public\u html\index中编写上述代码。上面的php代码

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
嵇出野
2023-03-14

您可以使用容器覆盖公共路径。例子:

App::bind('path.public', function() {
    return base_path().'/public_html';
});
 类似资料:
  • 我部署我laravel 5.4项目在共享主机上使用子域我安装了作曲家,改变了路径的index.php,供应商路径,DB主机,用户名等。 我得到以下错误 致命错误:未捕获意外值异常:在"/存储/日志"中没有现有目录,并且无法构建:在 /vendor/monolog/monolog/src/Monolog/Handler/StreamH中拒绝权限andler.php:171 我尝试了以下命令:php

  • PHP 非常流行,很少有服务器没有安装 PHP 的,因而有很多共享主机,不过需要注意服务器上的 PHP 是否是最新 版本。共享主机允许多个开发者把自己的网站部署在同一台服务器上面,这样的好处是费用非常便宜,坏处是你不知道将和哪些 网站共享主机,因此需要仔细考虑机器负载和安全问题。如果项目预算允许的话,避免使用共享主机是上策。

  • php应用程序托管在web上(共享托管),桌面服务在我的笔记本电脑上。 有没有解决这个问题的方法,或者有没有其他方法将消息从php发送到C#?

  • 我有一个网络应用程序,在localhost工作良好,但当我上传到cboard主页显示良好,但所有其他路线我得到错误404。到目前为止,我所做的(1)在根文件夹中创建文件夹myapp(2)复制所有公共文件到public_html(3)修改index.php两行到 在我的路线上我有 在我的链接中我有

  • 首先,我必须说,这个问题已经被问了几千次了。我使用以下工具创建了我的Laravel 5.5项目: 我没有给这个项目增加任何东西。项目在本地运行没有问题。当我想在共享托管网站上托管项目时,问题就来了(我正在使用infinityfree.net) Laravel 5.5的最低PHP版本:PHP 我的共享托管站点php版本:php版本7.0。19 我所做的唯一更改是: > 我复制了公共文件夹的内容到我的

  • 我将我的网站从本地主机移动到共享主机这一切都很好,但当我将存储的文件直接上传到public\u html时,我需要:类似于public\u html/storage/我尝试使用类似以下内容: 问题仍然存在。 我的控制器: 我的文件夹: 首页/abdoweb/{bmcelaravel} 核心laravel: 首页/{bmce} 非常感谢。