Laravel PHP Framework: Difference between revisions

No edit summary
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Making Subdirectories Accessible without a Public folder ==
== Making Subdirectories Accessible without a Public folder ==


Technically there is some risk to this, but I find it useful for development and preventing the need to create apache config files for every Laravel project.
Technically there is some risk to this since it could potentially expose configuration files in the root directory. I negate this somewhat by adding a DENY rule to .env files. I still wouldn't recommend it for a production site, but I find it useful for development and preventing the need to create apache config files for every Laravel project.


- Create a Laravel project
- Create a Laravel project
<pre>laravel create newproject</pre>


- Rename the 'server.php' file to 'index.php' in the root directory
- Rename the 'server.php' file to 'index.php' in the root directory
Line 27: Line 29:


Note: Customize the RewriteRule line to match your subdirectory.
Note: Customize the RewriteRule line to match your subdirectory.
== NGINX Setup ==
This configuration is for NGINX with PHP and FastCGI using FPM:
<pre>server {
    listen      80;
    server_name  localhost;
    location / {
        root  /usr/share/nginx/html;
        index  index.php index.html index.htm;
    }
    error_page  404              /404.html;
    error_page  500 502 503 504  /50x.html;
   
    location = /50x.html {
        root  /usr/share/nginx/html;
    }
    location /laravel/laravel2 {
        alias /usr/share/nginx/html/laravel/laravel2/public;
        try_files $uri $uri/ @laravel2;
        index index.php;
        location ~ \.php$ {
                fastcgi_pass  127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME $request_filename;
                include        fastcgi_params;
        }
    }
    location @laravel2 {
        rewrite /laravel/laravel2/(.*)$ /laravel/laravel2/index.php?/$1 last;
    }
    location ~ [^/]\.php(/|$) {
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/$fastcgi_script_name;
        include        fastcgi_params;
    }
    location /prscout {
        alias /usr/share/nginx/html/prscout/;
        try_files $uri $uri/ @prscout;
        index index.php;
        location ~ \.php$ {
                fastcgi_pass  127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME $request_filename;
                fastcgi_read_timeout 300;
                include        fastcgi_params;
        }
    }
    location @prscout {
        rewrite /prscout/(.*)$ /prscout/index.php?/$1 last;
    }
}</pre>

Latest revision as of 02:21, 19 March 2022

Making Subdirectories Accessible without a Public folder

Technically there is some risk to this since it could potentially expose configuration files in the root directory. I negate this somewhat by adding a DENY rule to .env files. I still wouldn't recommend it for a production site, but I find it useful for development and preventing the need to create apache config files for every Laravel project.

- Create a Laravel project

laravel create newproject

- Rename the 'server.php' file to 'index.php' in the root directory

- Add a .htaccess file to the root directory:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On
    RewriteRule ^(.*)/$ /hello/index.php/$1 [L]

</IfModule>

<Files .env>
    Order Allow,Deny
    Deny from all
</Files>

Note: Customize the RewriteRule line to match your subdirectory.

NGINX Setup

This configuration is for NGINX with PHP and FastCGI using FPM:

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.php index.html index.htm;
    }

    error_page  404              /404.html;
    error_page   500 502 503 504  /50x.html;
    
    location = /50x.html {
        root   /usr/share/nginx/html;
    }


    location /laravel/laravel2 {
        alias /usr/share/nginx/html/laravel/laravel2/public;
        try_files $uri $uri/ @laravel2;
        index index.php;

        location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME $request_filename;
                include        fastcgi_params;
        }
    }


    location @laravel2 {
        rewrite /laravel/laravel2/(.*)$ /laravel/laravel2/index.php?/$1 last;
    }

    location ~ [^/]\.php(/|$) {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/$fastcgi_script_name;
        include        fastcgi_params;
    }

    location /prscout {
        alias /usr/share/nginx/html/prscout/;
        try_files $uri $uri/ @prscout;
        index index.php;

        location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME $request_filename;
                fastcgi_read_timeout 300;
                include        fastcgi_params;
        }

    }

    location @prscout {
        rewrite /prscout/(.*)$ /prscout/index.php?/$1 last;
    }


}