Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更改公用文件夹名称后使用artisan Service_Php_Laravel_Laravel 5_Laravel Artisan - Fatal编程技术网

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一起工作,请在此处查看我的答案: