Php 更改公用文件夹名称后使用artisan Service
与许多主机一样,我们的公用文件夹被称为Php 更改公用文件夹名称后使用artisan Service,php,laravel,laravel-5,laravel-artisan,Php,Laravel,Laravel 5,Laravel Artisan,与许多主机一样,我们的公用文件夹被称为public\uhtml。这是在共享主机上,因此无法更改。我已将public文件夹更改为public\u html,以反映这一点,但当我执行artisan serve时,它停止工作。每次尝试启动时,我都会得到: [ErrorException] chdir(): No such file or directory (errno 2) 如果我将文件夹重新命名为public,则artisan serve将重新开始工作 我已经尝试过了,PostReports a
public\uhtml
。这是在共享主机上,因此无法更改。我已将public
文件夹更改为public\u html
,以反映这一点,但当我执行artisan serve
时,它停止工作。每次尝试启动时,我都会得到:
[ErrorException]
chdir(): No such file or directory (errno 2)
如果我将文件夹重新命名为public,则artisan serve将重新开始工作
我已经尝试过了,PostReports artisan中的用户为他们工作,但这对我没有任何影响。如何更改文件夹并让artisan serve工作?查找
/vendor/laravel/framework/src/light/Foundation/Application.php
此文件并更改以下功能
/**
* Get the path to the public / web directory.
*
* @return string
*/
public function publicPath()
{
return $this->basePath.DIRECTORY_SEPARATOR.'public_html';
}
Dipesh的回答实际上是一个非常糟糕的主意——只要你安装/更新/要求编写器,这些更改就会被吹走切勿直接编辑
供应商
目录中的任何内容。
相反,在bootstrap/app.php
中,您应该添加:
$app->bind('path.public', function() {
return __DIR__;
});
紧接着
$app = new Illuminate\Foundation\Application(
realpath(__DIR__ . '/../')
);
有关进一步的讨论以及以安全方式执行此操作的其他方法,请参阅
你也可以。这似乎是Laravel CLI(任何以
php artisan
开头的东西)获取它所必需的。仅供参考,Laravel不太可能与许多共享主机配合得很好。@ceejayoz为什么?我将要用Laravel重新开发我们的CMS,如果是这样的话,那将是一个真正的麻烦。这取决于主机。有些不允许您在存储
目录上正确设置权限/ACL。我会在你喜欢的主机上用一个最小的应用程序进行测试,看看是否一切都按预期进行。你也可以考虑使用像DigialOrthon这样的东西来获得5美元/月的VPS。我们使用心脏互联网,似乎有人已经为Laravel写了一个指南。我想我们应该没问题。@Styphon这实际上是一个非常糟糕的主意,下次使用composer update
、composer require
、或composer install
时,它会被吹走。您不应该更改核心文件上的任何代码。从ceejayoz的帖子中选择任何一种方式。你可以很容易地扩展核心类。在这里查看我的答案:谢谢你,但如果你注意到我在最初的问题中链接了这个讨论。我已经修改了bootstrap/app.php
,但没有效果。我还设置了/app/Providers/CustomServiceProvider.php
,并按照最后一篇文章的建议,在config/app.php
中与其他提供商一起列出了它。@Styphon您是否尝试了我添加的最后一个链接,扩展了Illumb\Foundation\Application?我认为这是必要的,因为Laravel的CLI似乎需要publicPath()
函数,您需要使用扩展技术来实现它。同样,另一个答案——直接编辑vendor
——会很快让你崩溃。我刚刚试过,它很有魅力。谢谢。很遗憾,答案中的两个链接都断了。如果您需要它与artisan一起工作,请在此处查看我的答案: