21

I have PHP with Apache2 and I want to run Laravel Framework without Artisan but I can't! Does anyone know how to run Laravel without Artisan?

cchapman
  • 3,269
  • 10
  • 50
  • 68
SyncroIT
  • 1,510
  • 1
  • 14
  • 26

12 Answers12

24

I've solved the problem. The problem was in my htaccess and in mod_rewrite (Apache2). Now I can connect to my application only by typing localhost/public..

If anyone wants to make the application public, the more easy and fastest way is:

  • Rename the "server.php" file in root directory, in "index.php"
  • Move your .htaccess from public folder to root directory
  • Make your directory accessible to Apache2 (set correct file/folder permissions).

Thanks to all users for help! :)

Important Edit

Consider using Apache Virtual Hosts (pointing the virtual host to the /public Laravel folder) instead of renaming server.php to index.php because by doing this you will need to prefix "public/" when you use the Laravel's asset() function in your views.

When working with other devs, who are using a different configuration, this might be a big problem because they will be able to see the assets while you will not (or viceversa).

SyncroIT
  • 1,510
  • 1
  • 14
  • 26
  • 1
    Thanks @Syncro It worked perfectly. My worry is this,is there no security issues that this might cause as all files and folders can be accesible, eg. localhost/laravel/app, etc. – FONGOH MARTIN May 14 '16 at 03:41
  • @FONGOHMARTIN Yes, The idea of using public folder is set this the only folder visible by the Web Server, for avoid public access to your classes. You can use the response for dev environments, but is not recomendable on production. – Ivan Montilla May 12 '17 at 16:48
  • Either we can point domain to `public/` or create `.htaccess` in project folder which will rewrite domain to `public/` folder. I added another answer for the same – Rohan Khude Jan 18 '19 at 10:05
  • Thanks in advance.It's working.could you please tell me the way of changing link's URL and tab navigation url? (this is my url :http://localhost/MonitorEnto/public/home) when I tried to navigate from home page to another page url is (http://localhost/add_employee) – Kaushali de silva Oct 14 '19 at 09:55
  • @Kaushalidesilva Change the APP_URL in you Laravel .env file. – SyncroIT Oct 15 '19 at 17:02
15

I am using xampp in mac

  1. inside htdocs / run following command: $ laravel new myblog

  2. After successfully creation run following and do following: sudo chmod -R o+w storage/

  3. Change server.php to index.php (@ root directory)

  4. copy .htaccess from public to root directory

  5. (optional) in resources / app.blade.php → Change to <link href="{{ asset('public/css/app.css') }}" rel="stylesheet">

  6. run following http://localhost/myblog/

shaedrich
  • 5,457
  • 3
  • 26
  • 42
Vinod Joshi
  • 7,696
  • 1
  • 50
  • 51
12

Easy solution without any code alterations

  • Point your domain to public/ folder of laravel project.
  • Enjoy!

~OR~

  • Create .htaccess in project folder and add below code. This code will rewrite domain to public/ folder of your laravel project
RewriteEngine on

RewriteRule ^(.*)?$ ./public/$1

Hope this is helpful.

Rohan Khude
  • 4,455
  • 5
  • 49
  • 47
6

Laravel framework is such a pain in the ass for startup PHP guys who are not much oriented about what the hell composer is, and where .phar files are coming from and what are they, and why "Artisan" is trying to ruin your PHP life. Most people are looking for a PHP framework where all you have to do is download, extract and code. Nevertheless to make things work, you just need to install Laravel through Composer:

composer global require "laravel/installer=~1.1"

Anyway, you can download Composer from http://getcomposer.org/

After you install Laravel through Composer, navigate to your local server's directory. You might want to use "CD" (Change directory) to do this. (I'm speaking of CLI, whether you're in BASH(Linux) or CMD(Windows)) Then create your very first Laravel project by typing this in command line:

laravel new mywebsite1

Replace "mywebsite1" with your first project name. And there you go, you're ready to hit the Laravel road.

In my case, I'm still using Windows XP in such development and shifts back to Ubuntu Trusty whenever I feel like I want to smell Linux scent. So Composer installs "Laravel installer" in:

%userprofile%\Application Data\Composer\vendor\bin

So I make a backup copy of this directory so the next time I use Laravel on other unit with no internet connection, I just have to extract it, and run:

laravel new [myprojectname]

within the same directory and copies the resulting folder to my XAMPP's htdocs or WAMP's www folder.

Anyway I'm just sharing my approach for those with no 24/7 internet connection at home :p

After all it's still best for everyone to read the documentation on how to properly install Laravel: http://laravel.com/docs/5.0/installation

Allen Linatoc
  • 624
  • 7
  • 17
3

For Windows Users Its very easy to change and run laravel projects on your normal project urls :
1. "server.php" to "index.php" .
2. copy ".htaccess" from public to root directory.

there you go with your normal URL .

localhost/project_name

Homesh Paul
  • 141
  • 9
2

Artisan is simply a command line interface. It is made to do things like create and run migrations and automate building certain objects within your Application, etc. Essentially, it's only made to help facilitate creating and working on your Application, not run it.

If you are having issues actually getting the Application to run, it is likely a problem with either your PHP or Apache, not Artisan.

cchapman
  • 3,269
  • 10
  • 50
  • 68
2

Just Follow 3 Step ;

  1. Change File Name : change serve.php to index.php inside your Project name folder.
  2. Move .htaccess file Bring ".htaccess" file to main root [inside your Project name folder ].
  3. Restart your local server. Your are just 1 click away . Restart all services of xampp or wamp
  4. Enjoy
mabdullahse
  • 3,474
  • 25
  • 23
  • I don't consider more this one a good solution because going this way you will be unable to use asset() and other functions in a proper way because your working directory is not public but it's the root folder of the project. So you have to reference "public/" every time you want to insert an asset. Imagine refactoring all the project when going in production just because of this. – SyncroIT Sep 02 '19 at 07:27
  • I think by doing this { using asset() function}, you saved yourself from other work m when you upload your project on live server – mabdullahse Sep 03 '19 at 03:28
1

For an aternative maybe you can run it under a virtual host. All you need is just create a new virtual host with your project/public directory as a DocumentRoot.

In my case, I am using XAMPP under Mac OS. These are the steps on how to achieve that:

  1. Enable virtual host config

Ensure virtual host config was enabled, else you can enable it through this file: /Applications/XAMPP/xamppfiles/etc/httpd.conf

$ sudo nano /Applications/XAMPP/xamppfiles/etc/httpd.conf

Remove the hash "#" of this following line

# Include /Applications/XAMPP/etc/extra/httpd-vhosts.conf
  1. Add a new virtual host

$ sudo nano /Applications/XAMPP/xamppfiles/etc/extra/httpd-vhosts.conf

The add a new virtual host (e.g: newproject.dev)

# Virtual host of newproject.dev <VirtualHost *:80> ServerName newproject.dev DocumentRoot "/Users/your-username/newproject/public" <Directory "/Users/your-username/newproject/public"> Options Indexes FollowSymLinks Includes execCGI AllowOverride All Require all granted </Directory> </VirtualHost>

Note: /Users/your-username/newproject/public is the location of your project.

  1. Update your hosts

$ sudo nano /etc/hosts

Add this following setting:

# Host of newproject.dev 127.0.0.1 newproject.dev

Restart your Apache, go to your browser and your project should be available on http://newproject.dev

antonifs
  • 303
  • 1
  • 3
  • 14
1

I got mine to work by adding the following block to my apache vhost conf file

<VirtualHost *:8003>
    ServerName myproject
    DocumentRoot "/path/to/myproject/public"
</VirtualHost>

and running sudo chown -R daemon storage from my project root

cck
  • 193
  • 1
  • 14
  • Reference: https://laracasts.com/discuss/channels/laravel/run-laravel-project-without-artisan – Ahsan Nov 22 '16 at 14:16
1

Well , the easy way is
1) create a new folder"Project" and copy all files except public folder content to project folder
2) copy all files of public folder to root
and you can run laravel without artisan.If you rename server.php and copy .htaccess , it may make trigger some error when you try to run auth artisan command.I experienced problem with auth command.

munna ss
  • 194
  • 1
  • 2
  • 11
1

Laravel with Vue.JS

If you are using vue.js with Laravel and your app is not working without php artisan serve, you need to create a virtual host. This is a simple two-step process for windows.

Step 1: Update you hosts file at C:\Windows\System32\drivers\etc with,

127.0.0.1       dev.example #You can rename according to your app

Step 2: Update you vhosts file with,

I am using Apache which is installed in D:\ so my path for vhosts file is at D:\xampp\apache\conf\extra

<VirtualHost *>
    DocumentRoot "D:\xampp\htdocs\example\public" ##Your path 
    ServerName dev.example ##Your URL according to what you set in hosts file in step 1 
    <Directory "D:\xampp\htdocs\example\public">  ##Your path      
        Order allow,deny     
        Allow from all   
    </Directory> 
</VirtualHost>

That's it, now you can just visit your app at http://dev.example/

Shahbaz A.
  • 4,047
  • 4
  • 34
  • 55
1
  1. Install and setup Laravel on your local (meaning your local machine).
  2. Once done, copy all files to your hosting.
  3. Create a .htaccess file on your Laravel's root directory. This is to access it without the "public" on the URL.
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]