将laravel 5上的网站部署到VPS服务器时遇到问题,但在本地计算机上运行正常。
我的页面为http://easyway.vn/当前页面显示为空白,错误
无法加载资源:服务器响应状态为500(内部服务器错误)
当我跑步时
php artisan serve --host = 0.0.0.0
我有错误
[ErrorException]
chdir():没有这样的文件或目录(错误2)
服务器信息
操作系统:Linux 2.6
服务器版本:Apache / 2.2.29(Unix)
PHP 5.4.41(cli)(建于2015年6月4日13:27:02) 版权所有(c)1997-2014 PHP小组 Zend Engine v2.4.0,版权所有(c)1998-2014 Zend Technologies
请帮帮我!
答案 0 :(得分:11)
重命名公用文件夹名称会导致此问题。
触摸供应商目录下的文件是您可能永远不会做的事情。
这是我在我的活动项目中测试和使用的另一种替代方法。
创建app / Console / Commands / Serve.php文件并将内容设置为:
<?php
namespace App\Console\Commands;
use Exception;
use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Process\PhpExecutableFinder;
use Symfony\Component\Process\ProcessUtils;
class Serve extends Command {
/**
* The console command name.
*
* @var string
*/
protected $name = 'serve';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Serve the application on the PHP development server';
/**
* Execute the console command.
*
* @return void
*
* @throws \Exception
*/
public function fire() {
chdir('/');
$host = $this->input->getOption('host');
$port = $this->input->getOption('port');
$base = ProcessUtils::escapeArgument($this->laravel->basePath());
$binary = ProcessUtils::escapeArgument((new PhpExecutableFinder)->find(false));
$this->info("Laravel development server started on http://{$host}:{$port}/");
if (defined('HHVM_VERSION')) {
if (version_compare(HHVM_VERSION, '3.8.0') >= 0) {
passthru("{$binary} -m server -v Server.Type=proxygen -v Server.SourceRoot={$base}/ -v Server.IP={$host} -v Server.Port={$port} -v Server.DefaultDocument=server.php -v Server.ErrorDocument404=server.php");
} else {
throw new Exception("HHVM's built-in server requires HHVM >= 3.8.0.");
}
} else {
passthru("{$binary} -S {$host}:{$port} {$base}/server.php");
}
}
/**
* Get the console command options.
*
* @return array
*/
protected function getOptions() {
return [
['host', null, InputOption::VALUE_OPTIONAL, 'The host address to serve the application on.', 'localhost'],
['port', null, InputOption::VALUE_OPTIONAL, 'The port to serve the application on.', 8000],
];
}
}
使用以下内容更新app / Console / Kernel.php文件:
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel {
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
// Commands\Inspire::class,
Commands\Serve::class,
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule) {
// $schedule->command('inspire')
// ->hourly();
}
}
这就是全部!
现在运行你的服务命令:
$ php artisan serve
服务器已启动:
Laravel development server started on http://localhost:8000/
答案 1 :(得分:10)
这意味着您的Laravel应用程序无法找到公用文件夹。
我通过改变
来实现它/tr
在vendor / laravel / framework / src / Illuminate / Foundation / Console / ServeCommand.php中:
chdir($this->laravel->publicPath());
答案 2 :(得分:3)
`chdir($this->laravel->publicPath());`
change to
chdir('/');
2. 第二步更改your_public_folder / index.php中的这两个路径
require __DIR__.'/../your_app/bootstrap/autoload.php';
$app = require_once __DIR__.'/../your_app/bootstrap/app.php';
3. 第三步更改your_app / server.php中的公共路径
if ($uri !== '/' && file_exists(__DIR__.'/../public_html/'.$uri)) {
return false;
}
require_once __DIR__.'/../public_html/index.php';
注意:根据应用的新文件夹结构更改这些路径。
答案 3 :(得分:2)
更改
chdir(public_path());
收件人
chdir('/');
来自: vendor / laravel / framework / src / Illuminate / Foundation / Console / ServeCommand.php
答案 4 :(得分:2)
重命名public
文件夹时出现此错误。
从不编辑供应商文件夹中的文件。 composer更新或新安装后,您将丢失所做的更改。
一种更好的解决方案是编辑 bootstrap / app.php 并将此代码段放在return语句之前。
$app->bind('path.public', function() {
return base_path() . '/web';
});
答案 5 :(得分:1)
转到根文件夹中的server.php并将任何public
重命名为any name you have
答案 6 :(得分:1)
通常在发生此类错误时,这意味着Laravel正在寻找公共文件夹,但无法找到它。这取决于您如何配置您的应用程序并使用php artisan服务--host=0.0.0.0
在这种情况下不起作用。处理此问题的最佳方法是将应用程序放在服务器(htdocs)中并在您的URL中访问它。
供应商目录包含您的Composer依赖项。有关详细信息,请访问Laravel Documentation。永远不要编辑供应商中的任何内容,因为当您进行作曲家更新时可能会导致问题。
答案 7 :(得分:0)
我知道您很久以前就问过这个问题,但对于那些寻求最简单有效的方法来解决此问题的人来说:
此错误意味着laravel无法找到公用文件夹。您必须在Providers / AppServiceProvider.php 的 register 方法中添加以下代码:
public function register()
{
$this->app->bind('path.public', function() {
return base_path('PATH TO PUBLIC FOLDER');
});
}
通过这种方式,laravel知道在哪里可以找到公用文件夹路径。
答案 8 :(得分:0)
请记住当您在生产环境中运行时,将公共更改的路径更改为public_html,以便再次在localhost中运行时,我将其更改为app / Providers / AppServiceProvider.php
此:
public function register()
{
$this->app->bind('path.public',function(){return'/public';});
}
对此:
public function register()
{
// commented this line
}
更改.env环境后,也可以在server.php和index.php中