Jazzy
Jazzy

Reputation: 6139

Laravel php artisan serve to mimic HTTPS

I have been searching around to see if there is a way I can mock SSL for local development using Laravel's artisan to serve HTTPS with no luck.

Is this possible and if so, how?

I understand this is a very general question, but I am not seeing anything on this in searches.

Upvotes: 23

Views: 40551

Answers (3)

SenTisso
SenTisso

Reputation: 641

If you're using xampp, then you can setup HTTPS locally with xampp (this post is also useful for setting up HTTPS) and then you can:

  1. move your project to htdocs folder and visit it with https://localhost/projectFolder/public/

  2. or just create a special VirtualHost in httpd-vhosts.conf for this project (always point to that public folder, this is from where the project is running) and then visit it with https://localhost/ in this example (you can of course, run it on a subdomain if you want to)

    <VirtualHost *:80>
        ServerName localhost
        DocumentRoot "c:\pathToYourProject\projectFolder\public"
        <Directory "c:\pathToYourProject\projectFolder\public">
            Options All
            AllowOverride All
        </Directory>
    </VirtualHost>
    
    # this should ensure https (this is mentioned in the stackoverflow post, that I linked as useful
    <VirtualHost *:443>
        ServerName localhost
        DocumentRoot "c:\pathToYourProject\projectFolder\public"
        SSLEngine on
        SSLCertificateFile "conf\ssl.crt\server.crt"
        SSLCertificateKeyFile "conf\ssl.key\server.key"
        <Directory "c:\pathToYourProject\projectFolder\public">
            Options All
            AllowOverride All
        </Directory>
    </VirtualHost>
    

Theoretically, when you're using this method, you don't even need php artisan serve (tbh I'm not entirely sure if it has any purpose in this case).

Upvotes: -1

Іван Худа
Іван Худа

Reputation: 457

You can use ngrok for that

php artisan serve
cd <path-to-ngrok>
./ngrok http localhost:8000

https://ngrok.com/

Upvotes: 31

kieranajp
kieranajp

Reputation: 484

Laravel uses the in-built PHP5.4 development server php -S (http://php.net/manual/en/features.commandline.webserver.php) for it's artisan serve command (see Illuminate\Foundation\Console\ServeCommand). This only supports plain HTTP, so no, this isn't possible. Your best bet would be to use a Vagrant box set up to work with SSL/TLS.

Upvotes: 15

Related Questions