Laravel Framework public Dizin İsmini Değiştirme

public dizin ismini public_html olarak değiştirmek için yönergeler

9 ay önce laravel, public etiketinde yazıldı.

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:

Public Dizin İsmi Değiştirme

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!