Laravel Framework public Dizin İsmini Değiştirme

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

11 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!