更改公用文件夹名称后使用工匠服务
Posted
技术标签:
【中文标题】更改公用文件夹名称后使用工匠服务【英文标题】:Using artisan serve after changing the public folder name 【发布时间】:2015-08-01 18:36:06 【问题描述】:与许多主机一样,我们的公用文件夹称为public_html
。这是在共享主机上,因此无法更改。我已将 public
文件夹更改为 public_html
以反映这一点,但是当我这样做时 artisan serve
停止工作。每次我尝试启动它时,我都会得到:
[ErrorException]
chdir(): No such file or directory (errno 2)
如果我将文件夹重命名为 public,那么 artisan serve
将再次开始工作。
我试过following this post on laracasts,帖子中的用户报告说工匠为他们工作,但这对我没有任何影响。如何更改文件夹并让artisan serve
工作?
【问题讨论】:
仅供参考,Laravel 不太可能与许多共享主机配合得很好。 @ceejayoz 为什么会这样?我即将使用 Laravel 重新开发我们的 CMS,所以如果是这样的话,那将是一件非常痛苦的事情。 取决于主机。有些不会让您在storage
目录上正确设置权限/ACL。我会在您首选的主机上使用最小的应用程序进行测试,看看一切是否按预期工作。您还可以考虑使用 DigitalOcean 之类的工具来获得每月 5 美元的 VPS。
好吧,我们使用 Heart Internet,似乎有人已经和他们一起编写了 Laravel 指南 - novate.co.uk/…。我认为我们应该没事。
【参考方案1】:
Dipesh 的回答实际上是一个非常糟糕的主意 - 只要您执行 Composer 安装/更新/要求,这些更改就会被吹走。 切勿直接编辑vendor
目录中的任何内容。
相反,在bootstrap/app.php
中,您应该添加:
$app->bind('path.public', function()
return __DIR__;
);
紧接着
$app = new Illuminate\Foundation\Application(
realpath(__DIR__ . '/../')
);
请参阅https://laracasts.com/discuss/channels/general-discussion/where-do-you-set-public-directory-laravel-5 以了解进一步的讨论以及以安全方式执行此操作的替代方法。
您也可以extend Illuminate\Foundation\Application
。这似乎是 Laravel CLI(以 php artisan
开头的任何内容)所必需的。
【讨论】:
谢谢你,但如果你注意到我在我原来的问题中链接了那个讨论。我已经修改了bootstrap/app.php
无济于事。我还设置了 /app/Providers/CustomServiceProvider.php
并将其与其他提供者一起列在 config/app.php
中,正如最后一篇文章所建议的那样。
@Styphon 您是否尝试了我添加的最后一个链接,扩展了 Illuminate\Foundation\Application?我怀疑这是必要的,因为 Laravel 的 CLI 似乎需要 publicPath()
函数,您需要使用扩展技术。同样,另一个答案 - 直接编辑 vendor
- 会很快打断你。
我刚刚尝试过,它很有魅力。谢谢。
不幸的是,答案中的两个链接都已损坏。如果您需要它与artisan
一起使用,请在此处查看我的答案:***.com/a/33652169/1296104【参考方案2】:
找到/vendor/laravel/framework/src/Illuminate/Foundation/Application.php
这个文件
并更改以下功能
/**
* Get the path to the public / web directory.
*
* @return string
*/
public function publicPath()
return $this->basePath.DIRECTORY_SEPARATOR.'public_html';
【讨论】:
@Styphon 这实际上是一个非常糟糕的主意,下次使用composer update
、composer require
或composer install
时会被吹走。
您不应更改核心文件上的任何代码。从 ceejayoz 的帖子中选择任一方式。
您可以轻松地扩展核心类。在这里查看我的答案:***.com/a/33652169/1296104以上是关于更改公用文件夹名称后使用工匠服务的主要内容,如果未能解决你的问题,请参考以下文章