Laravel showing code of index.php on home page - php

I'm using Apache 2.4 on Ubuntu 16.04, it shows the content of the index.php in browser.
here's the code of my site's conf file:
<VirtualHost *:80>
DocumentRoot /var/www/laravel/public
ServerName laravel.dev
<Directory /var/www/laravel/public>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Why the home page renders index.php as text file?
Note: I have set 777 permissions to laravel folder. PHP is also installed.

I got the solution over here..
Actually, I had to install libapache2-mod-php and activate it i.e. a2enmod php7.0

add below command :
sudo apt-get install libapache2-mod-php7.2
(this will pull the default PHP version)
Reload Apache configuration changes by restarting service using below command
sudo service apache2 restart

I ran into same issue and was looking for answers. In my case I had multiple versions of PHP installed with all necessary libraries, including the one mentioned in answers above.
The cause of issue turned out to be not properly switching between PHP, which I do time to time while switching projects. Running again a2dismod php5.6 and then a2enmod php7.3 (switch from php5.6 to php7.3) and restarting apache did the job for me.
Hope this helps someone with similar issue like mine.

Related

Difference between php-fpm with libapache2-mod-fcgid and/or libapache2-mod-fastcgi

right now I'm installing or new apache2 webserver with PHP-FPM, because the old one is running with mod_php.
I found different Tutorials at the internet, unlikely most of them 1-2 years old. Most of them use:
libapache2-mod-fastcgi in combination with Apache and PHP-FPM.
At the Ubuntu 18.04 Repository this package is not available, just the package:
libapache2-mod-fcgid
Which of them can I use now ? Or what is the difference between both of them ? Unfortunately I cant really find a good explanation at the internet.
Furthermore I often read about
mod_proxy_fcgi
does that mean I dont need the libaapche2-mod-f... packages anymore ? ?
Right now I installed everything like this and it works, but I'm not sure If this is the right way:
a2enmod actions fastcgi alias proxy_fcgi
apt install php-7.2 php7.2-fpm php7.2-gd php7.2-mysql php7.2-curl php7.2-xml php7.2-zip php7.2-intl php7.2-mbstring php7.2-bz2 php7.2-json php7.2-apcu php7.2-imagick
a2enmod actions fastcgi alias proxy_fcgi
vHost:
<VirtualHost *:80>
ServerAdmin webmaster#localhost
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/"
</FilesMatch>
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
PHP-FPM is running (see picture of info.php):
PHP-FPM Working
And what is the difference between:
SetHandler and FastCgiExternalServer and ProxyPassMatch ^/(..php(/.)?)$ fcgi://127.0.0.1:9000/path/to/your/documentroot/$1
?
I've got the feeling, that every tutorial is telling me something different and I cant really figure out what the best practice is in 2018 with Ubuntu2018.
I know this is an old question but I wanted to give an updated response.
As of the release of php5.3.3 (in 2010) a lot has changed.
Some great info can be found on the Apache HTTP Server Wiki
The short answer (Note: replace php7.2 with the version you have installed) as to how to install only PHP-FPM on an Ubuntu apache2 server is:
# Install php-fpm:
apt install php-fpm
# Disable mod_php (Apache Handler API):
a2dismod php*
# Enable Apache Modules/Configs required by fpm:
a2enmod proxy_fcgi setenvif
a2enconf php7.2-fpm.conf
# Restart the services:
systemctl restart php7.2-fpm.service systemctl restart apache2.service
You are also going to need to change from using Pre-fork as your Multi-Processing Module (MPM) if you are going to run PHP-FPM. Here are some instructions.
Detailed Explanation:
There are basically 3 different Server API's that can be installed with PHP: Apache Handler, FPM, or CGI.
Looking at the different config files can help to understand what you may have installed on your system.
Currently on Ubuntu 18.x with php7.x the following php.ini files get created depending on what you have installed:
/etc/php/7.2/cli/php.ini
This is the PHP-CLI program for running php on the command line.
This is included whenever you install FPM, CGI, or the Apache Handler.
You could install it directly with:
apt install php-cli
To find all the config files being used for PHP-CLI you can run:
php --ini
/etc/php/7.2/apache2/php.ini
This is the PHP plugin used by Apache. It will be found in /etc/apache2/mods-available/php7.2
If you have not installed PHP-FPM or PHP-CGI then this is the file that contains your webserver settings.
To find all the config files you need to create a phpinfo() file in the website root directory.
To install you must also enable mod_php from within Apache.
apt install libapache2-mod-php
a2enmod php7.2
/etc/php/7.2/fpm/php.ini
This is the FastCGI Process Manager. It is a wrapper for PHP processing and runs as a standalone process on the system (unlike the Apache PHP plugin).
You will only have this directory if you have installed PHP-FPM.
In this case it will be the place to make config changes for your webserver and takes the place of the apache2/php.ini file.
To find all the config files you need to create a phpinfo() file in the website root directory.
Running PHP as a fastCGI process server with PHP-FPM requires using the apache module mods-enabled/mod_proxy_fcgi it is enabled along with php-fpm.
Installing php-fpm will also configure apache with with conf-enabled/php7.2-fpm.conf that sets up FPM to run as a unix domain socket.
apt install php-fpm
a2enmod mod_proxy_fcgi
/etc/php/7.2/cgi/php.ini
This is a third way PHP could be installed. It is the legacy way of running PHP based applications as opposed to the newer PHP-FPM.
mod_fcgid is a high performance alternative to mod_cgi or mod_cgid
It would also be taking the place of the php.ini in either the Apache Plugin or PHP-FPM.
To find all the config files you need to create a phpinfo() file in the website root directory.
Again, it comes with it's own apache module and configuration: mods-enabled/fcgid.conf mods-enabled/fcgid
apt install libapache2-mod-fcgid
a2enmod fcgid
Here's my vhost for Apache connecting to FPM using mod_proxy_fcgi (apparently the recommended setup, although don't ask me for specifics!):
<VirtualHost *:80>
ServerName awesome.scot
ServerAlias localhost
DocumentRoot /var/www/html/public
<Directory "/var/www/html">
DirectoryIndex index.php
FallbackResource /index.php
Options -Indexes +FollowSymLinks
AllowOverride FileInfo All
Require all granted
</Directory>
ProxyPassMatch ^/(.*\.php)$ fcgi://php:9000/var/www/html/public/$1
</VirtualHost>
in the conf, I also have these on:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
If you use XDebug, you'll need to change it's port to 9001 since 9000 is now taken.
If you need to see more config, check out my Docker LAMP stack config here https://github.com/delboy1978uk/lamp

apache2 not executing php scripts on Debian stretch

Recently I a upgraded my Debian server from Jessie to Stretch (Debian 9.5). All went well except that php generated websites are not executing when requested by the web-browser. As for instances http://92.51.132.110/~mlakova/hotglue/hotglue/index.php where i get as a response the php source code and not the generated html.
If I ssh onto the server and execute that same script with php index.php i get the generated html, without errors.
The php --version is PHP 7.0.30-0+deb9u1 (cli)
apache2 has module php7.0 enabled.
php5 is uninstalled and purged
The full phpinfo(); is available in http://92.51.132.110/info.php
The php error log is not showing any errors.
Anyone has leads on why this is happening and how can it be fixed? Might it have to do with the transition from mysql to mariadb?
I had this problem too. You can fix this problem with these commands. You need to install libapache2-mod and enable apache PHP mode.
Install:
sudo apt-get install apache2 php7.x libapache2-mod-php7.x
Verify:
a2query -m php7.x
Load:
sudo a2enmod php7.x
Restart apache:
sudo service apache2 restart
And you can check.
Solved!
It was due to /etc/apache2/mods-available/php7.0.conf having the followings lines, which only required commenting.
# Running PHP scripts in user directories is disabled by default
#
# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
<IfModule mod_userdir.c>
<Directory /home/*/public_html>
php_admin_flag engine Off
</Directory>
</IfModule>
After it was only only a question disabling apache module php7.0; restarting apache and enabling the module and restarted did the job! thank you!

How to enable mode rewrite in apache2

I have installed Apache2, PHP5, MySQL. And now I am trying to run my project, but getting error:
The requested URL /toothi/home was not found on this server.
Apache/2.2.22 (Ubuntu) Server at 192.168.2.169 Port 80
I am trying to run my project on Ubuntu 12.04
To enable mod_rewrite in apache2-
sudo a2enmod rewrite
sudo apache2 restart
To use mod_rewrite from within .htaccess files (which is a very common use case), edit the default VirtualHost.
sudo vim /etc/apache2/sites-available/000-default.conf
Below “DocumentRoot /var/www/” add the following lines:
<Directory “/var/www/”>
AllowOverride All
</Directory>
Restart the server again:
sudo service apache2 restart

Page on VPS in Laravel doesn't work

I bought VPS and installed on it Laravel, main page working normal and I getting subtitle "Laravel 5" but when I created test page, in route file:
Route::get('/test', function() {
return 'test' ;
});
I getting this:
Not Found
The requested URL /test was not found on this server.
Apache/2.4.7 (Ubuntu) Server at plerp.net.pl Port 80`
I chmod storage folder on 777.
`
ServerName www.plerp.net.pl
DocumentRoot /var/www/laravel/public
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/laravel>
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
`
I think your web server does not have the rewrite module activated. Try this (beware, Apache only instructions below):
sudo a2enmod rewrite (for Debian/Ubuntu family)
sudo ln -s /etc/httpd/mods-available/rewrite.load /etc/httpd/mods-enabled/ (for Red Hat / CentOS family)
It might not be installed, in which case you'll need to search for it in the distribution's repositories:
sudo apt search apache rewrite for deb-based distros
sudo yum search httpd rewrite for rpm-based or sudo dnf search httpd rewrite for Fedora 21+
then install it with
sudo apt install <name-of-package> for deb-based
sudo yum install <name-of-package> for rpm-based (replace yum with dnf for Fedora 21+)
You might want to double check on file and folder permissions, most probably all you need to do is to chown the respective folder under the web server's user.

Have trouble installing phpmyadmin on PHP7 Apache/2.4.7 (Ubuntu)

I installed PHP7 today with
sudo add-apt-repository ppa:ondrej/php-7.0
sudo apt-get install php7.0-cli php7.0-common libapache2-mod-php7.0 php7.0 php7.0-mysql php7.0-fpm
after this, I got 403 forbidden error when I tried to access phpmyadmin.
then I tried to reinstall phpmyadmin with
apt-get install phpmyadmin
but it still looks for php5 dependencies which arent there anymore:
what can I do to solve this?
Install it via wget and create an alias in Apache. Keep track:
Change to directory /usr/share:
cd /usr/share
Change to root user:
sudo su
Download phpMyAdmin:
wget https://files.phpmyadmin.net/phpMyAdmin/4.5.4.1/phpMyAdmin-4.5.4.1-all-languages.zip
Unzip it: (you may install unzip first)
unzip phpMyAdmin-4.5.4.1-all-languages.zip
Rename the folder:
mv phpMyAdmin-4.5.4.1-all-languages phpmyadmin
Change permissions:
chmod -R 0755 phpmyadmin
Configure apache so that it can find it correctly:
vim /etc/apache2/sites-available/000-default.conf
Anywhere after "DocumentRoot /var/www/html" insert these line:
Alias /phpmyadmin "/usr/share/phpmyadmin/"
<Directory "/usr/share/phpmyadmin/">
Order allow,deny
Allow from all
Require all granted
</Directory>
Restart Apache:
service apache2 restart
And you are ready to go!
Just took a screenshot from my current installation for you to validate it works.
phpMyAdmin depends on the extension mbstring.
For Debian users (tested in Ubuntu 15.10),
sudo apt-get install php7.0-mbstring
For Fedora and CentOS,
sudo yum install php70w-mbstring
Using git clone of the original repo with a daily update cron job as documented here https://laracasts.com/discuss/channels/general-discussion/phpmyadmin-with-php7 worked really well for me. I put the following in my Vagrantfile (for a development server)
if [ ! -d /usr/share/phpmyadmin ]; then
sudo mkdir /usr/share/phpmyadmin
sudo git clone --depth=1 --branch=STABLE https://github.com/phpmyadmin/phpmyadmin.git /usr/share/phpmyadmin
fi
then added the alias as above
Alias /phpmyadmin "/usr/share/phpmyadmin/"
<Directory "/usr/share/phpmyadmin/">
Order allow,deny
Allow from all
Require all granted
</Directory>
and
service apache2 restart
very easy, only a few steps, always up to date. (Ubuntu wily, php7)
Before installing PHP 7 you should backup your database. During the installation process, you will delete your old version of php and be asked if you want to delete your database. Don't do it unless you really want to get rid of it.
Download phpmyadmin from https://www.phpmyadmin.net/ and uncompress it and move the folder to one level below the document root folder. It then worked for me when I navigated to it with localhost without further setup. I had to erase my bookmarks to phpmyadmin and make new bookmarks for the new location. My old database was fine.
I would like to install phpmyadmin globally so it could be installed or reinstalled or updated by apt-get, but don't know how.
I followed Magnus Eriksson's suggestion from comments
Try to install the latest version manually by downloading phpmyadmin
from their website. In all fairness, phpmyadmins apt-repo has
dependencies to other packages in the official apt-repo. PHP7 doesn't
exist in the apt-repo. (you added it manually, which phpmyadmins repo
has no clue about).
CentOS 7.2, PHP 7, PhpMyadmin 4.6.4
Step 1:
$ cd /usr/share
$ wget https://files.phpmyadmin.net/phpMyAdmin/4.6.4/phpMyAdmin-4.6.4-all-languages.zip
$ unzip phpMyAdmin-4.6.4-all-languages.zip
$ mv phpMyAdmin-4.6.4-all-languages phpmyadmin
Step 2:
$ cd /etc/httpd/conf.d
$ touch phpmyadmin.conf
$ put on phpmyadmin.conf following content
Alias /phpMyAdmin /usr/share/phpmyadmin
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin/>
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 217.x.x.x
Require ip ::1
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 217.x.x.x
Allow from ::1
</IfModule>
</Directory>
<Directory /usr/share/phpmyadmin/setup/>
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>
<Directory /usr/share/phpmyadmin/libraries/>
Order Deny,Allow
Deny from All
Allow from None
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib/>
Order Deny,Allow
Deny from All
Allow from None
</Directory>
<Directory /usr/share/phpmyadmin/setup/frames/>
Order Deny,Allow
Deny from All
Allow from None
</Directory>
Step 3:
systemctl restart httpd
Step 4: i Cake http://www.example.com/phpmyadmin

Categories