Merhaba arkadaşlar,
Laravel ile herhangi bir projeye başlarken ilk yaptığım eylemlerden biri, virtual host sorunları yaşamamak ve sunucularımdaki varsayılan public dizini public_html olduğundan Laravel’in public dizinini public_html olarak değiştirmektir.
Not: Ben burada varsayılan public dizin isminin public_html olduğunu varsayarak işlem yapacağım, sizin sunucunuzda bu dizinin ismi www, htdocs, httpdocs vs. olabilir. Sunucunuzu denetleyip bu isme göre yapılandırmanızı yapmalısınız.
Aşağıdaki örnekte FileZilla uygulamasından örnek ekran görüntüsü sunulmuştur:
Bu değişikliğin, php artisan serve komutunu kullandığınızda sorun çıkarmaması, ayrıca elixir / gulp kullandığınızda da gerekli vendor publish durumlarında da varlıklarınızın (asset) bu dizine gönderilmesi için gerekli tüm yapılandırmayı gerçekleştireceğiz.
Aşağıdaki yönergeleri adım adım takip edin:
public dizinini public_html olarak adlandırın.
Bu dizindeki index.php dosyası içindeki
$app = require_once __DIR__ . '/../bootstrap/app.php';
satırının altına aşağıdaki satırları ekleyin:
// set the public path to this directory
$app->bind('path.public', function () {
return __DIR__;
});
kaydedin ve kapatın.
Proje ana dizinindeki server.php dosyası içindeki ‘/public’ kısımlarını ‘/public_html’ olarak güncelleyin.
Proje ana dizinindeki gulpfile.js dosyasının içindeki
var elixir = require('laravel-elixir');
satırının altına bunları ekleyin:
elixir.config.sourcemaps = false;
elixir.config.publicDir = 'public_html';
elixir.config.publicPath = 'public_html';
elixir.config.cssOutput = 'public_html/css'; // tercihe bağlı
elixir.config.jsOutput = 'public_html/js'; // tercihe bağlı
kaydedin ve kapatın.
app/Console/Commands dizini içinde Serve.php adında bir dosya oluşturun ve bunları içine kaydedin:
<?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],
];
}
}
kaydedin ve kapatın.
app/Console içindeki Kernel.php dosyasındaki
protected $commands = [
//
];
kısmını aşağıdaki şekilde ayarlayın:
protected $commands = [
Commands\Serve::class,
];
kaydedin ve kapatın.
İşlem tamam!
Takıldığınız herhangi bir şey olursa, bu makalenin altındaki yorum alanından iletebilirsiniz.
Keyifli Laravellemeler!