Php 公共路径在生产中不起作用,但它';他在当地工作

Php 公共路径在生产中不起作用,但它';他在当地工作,php,laravel,Php,Laravel,public\u path()在生产环境中对我不起作用,但在本地环境中它起作用 在localhostpublic\u path()中,函数工作正常。但是,当文件移动到服务器时,在illumb\Foundation\Application.php中会出现错误,您会发现: /** * Get the path to the public / web directory. * * @return string */ public function pu

public\u path()
在生产环境中对我不起作用,但在本地环境中它起作用


在localhost
public\u path()
中,函数工作正常。但是,当文件移动到服务器时,在illumb\Foundation\Application.php中会出现错误

,您会发现:

 /**
     * Get the path to the public / web directory.
     *
     * @return string
     */
    public function publicPath()
    {
        return $this->basePath.DIRECTORY_SEPARATOR.'public';
    }
}
basePath返回Laravel安装的基本路径

有时,此路径不能满足您的需要,因此您必须覆盖它。。。 请记住,您不能更改此类代码,因为它超出了您的项目代码。。。 根据您的laravel版本,您有一些选择:

1-调整bootstrap/path.php中的路径值

'public' => __DIR__.'/../public'
见:

2-您可以使用ioc容器覆盖公共路径:

App::bind('path.public', function() {
    return base_path().'/public_html';
});

在本次讨论中有一些很好的建议,其中包含非常好的想法

您必须在
index.php
中更改公用文件夹路径

有时此文件夹称为
public\u html
。典型的用户
public html
路径示例是
/home/user/public\u html

因此,要在自定义公用文件夹中运行应用程序,您需要更改以下4个最重要的文件:
/server.php
此文件位于根文件夹中。当您调用命令PHP artisan serve时,本地PHP开发服务器使用。它具有公用文件夹的硬编码值。将此值更改为自定义路径(例如:
public\u html

/app/AppServiceProvider.php

在此文件中,您可以注册并启动应用程序的一些服务提供商。有一个名为
register()
的函数。通常,此部分默认为空。您需要添加额外的代码来定义自定义应用程序路径

public function register()
{
  $this->app->bind('path.public', function() {
    return base_path().'/public_html';
  });
}
/config/filesystems.php
该文件定义了一些重要的文件系统位置、云文件系统的使用以及其他与文件相关的配置。修改
public
部分以将
root
app/public
更改为所需位置,例如,
app/public\u html
app
是根文件夹的别名)

/webpack.mix.js

或者,一些Laravel安装使用Laravel Mix插件模块,使用Webpack npm插件生成javascript、css和其他前端文件的统一和小型版本。这些文件安装在公用文件夹中(例如,
/public/js
/public/css/
)。添加一行更改默认公共路径(
mix.config.publicPath
),并在Laravel mix配置中将公用文件夹更改为所需的public文件夹名称

mix.config.publicPath='public_html';
mix.js('resources/assets/js/app.js', 'public_html/js')
  .sass('resources/assets/sass/app.scss', 'public_html/css');
移动公用文件夹
将公用文件夹移动到另一个文件夹的最简单方法是使用move(
mv
)命令。之后,您的公用文件夹现在将被重命名

mv public public_html

显示您的代码,我们可以提供帮助
mix.config.publicPath='public_html';
mix.js('resources/assets/js/app.js', 'public_html/js')
  .sass('resources/assets/sass/app.scss', 'public_html/css');
mv public public_html