Назад | Перейти на главную страницу

Сервер Debian показывает PHP-код вместо его интерпретации

Мне сказали в stackoverflow опубликовать этот вопрос здесь:

Прокрутите вниз, чтобы увидеть результат того, что я сделал на основе предложений

Я создаю свой первый проект с помощью Vagrant. Я выбрал следующий пакет puppetlabs/debian-7.8-64-puppet для сервера debian, потому что это то же самое, что мы используем для нашего удаленного сервера разработки. К сожалению, этот дистрибутив debian содержит только версию PHP 5.4, поэтому я попытался установить dotdeb, чтобы использовать PHP 5.6.11.

я добавил

deb http://packages.dotdeb.org wheezy all
deb-src http://packages.dotdeb.org wheezy all
deb http://packages.dotdeb.org wheezy-php56 all
deb-src http://packages.dotdeb.org wheezy-php56 all

как упоминалось здесь https://www.dotdeb.org/instructions/ к моему /etc/apt/sources.list а затем выполнил следующие команды

wget http://www.dotdeb.org/dotdeb.gpg
sudo apt-key add dotdeb.gpg

## get package list from sources incl. new set source dotdeb
sudo apt-get update

## Install php, APC, gd and cURL
sudo apt-get install -y php5 php5-apcu php5-gd php5-curl

Теперь при использовании php --version он сообщает мне, что я использую версию 5.6.11, так что, похоже, установка прошла успешно. Но проблема, с которой я столкнулся, заключается в том, что веб-сервер, похоже, не интерпретирует его, потому что он отображает настоящий код PHP. Что я делаю не так?

Вот мой Vagrantfile без комментариев

config.vm.box = "puppetlabs/debian-7.8-64-puppet"
config.vm.provision :shell, path: "vagrant_ressources/bootstrap.sh"
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.synced_folder ".", "/var/www"

А это мой bootstrap.sh

#!/usr/bin/env bash

# Use single quotes instead of double quotes to make it work with special-character passwords
PASSWORD='12345678'

# Update package manager
apt-get update
# Install apache2
sudo apt-get install -y apache2

# Add dotdeb to packages
if [ ! -f /var/log/dotdebconfig ];
then
echo "" | sudo tee --append /etc/apt/sources.list
echo "#dotdeb" | sudo tee --append /etc/apt/sources.list
echo "deb http://packages.dotdeb.org wheezy all" | sudo tee --append /etc/apt/sources.list
echo "deb-src http://packages.dotdeb.org wheezy all" | sudo tee --append /etc/apt/sources.list
echo "deb http://packages.dotdeb.org wheezy-php56 all" | sudo tee --append /etc/apt/sources.list
echo "deb-src http://packages.dotdeb.org wheezy-php56 all" | sudo tee --append /etc/apt/sources.list
wget http://www.dotdeb.org/dotdeb.gpg
sudo apt-key add dotdeb.gpg

## get package list from sources incl. new set source dotdeb
sudo apt-get update

## Install php, APC, gd and cURL
sudo apt-get install -y php5 php5-apcu php5-gd php5-curl

touch /var/log/dotdebconfig

fi

#install mysql and give password to installer
if [ ! -f /var/log/mysqlconfig ];
then
# Set passwords
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password $PASSWORD"
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password_again password $PASSWORD"
# Install MySQL Server and cURL
sudo apt-get -y install mysql-server
sudo apt-get -y install php5-mysql

touch /var/log/mysqlconfig

fi

if [ ! -f /var/log/XXXXXX ];
then
    mkdir -p /var/www/htdocs
    # Install XXXXXX vhost
    sudo a2dissite default
    sudo a2enmod rewrite
    cd /etc/apache2/sites-available
    # copy default vhost conf to sites-available
    sudo cp /var/www/vagrant_ressources/XXXXXX.vhost.conf XXXXXX.dev
    sudo a2ensite XXXXXX.dev
    touch /var/log/XXXXXX
fi

sudo /etc/init.d/apache2 restart

А это мой XXXXXX.vhost.conf (не знаю, нужен ли он)

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/htdocs
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /var/www/htdocs/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride All
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Предложения

Кто-то сказал мне: «Попробуйте установить libapache2-mod-php5»
Однако похоже, что он уже на моем сервере, потому что я получаю следующее сообщение об ошибке: libapache2-mod-php5 is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 8 not upgraded.

Проверьте, добавлен ли php в конфигурацию apache.

По крайней мере, у вас должна быть строка, подобная этой, в вашем apache conf:

LoadModule php5_module modules/libphp5.so

и или такую ​​строку:

SetHandler application/x-httpd-php

Если это проблема, вы должны добавить:

LoadModule php5_module modules/libphp5.so

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

Есть еще несколько дополнительных параметров, которые вы можете настроить, полная документация о том, как это сделать, находится здесь: Вот

Если все на месте и все еще не работает, проверьте, установлен ли у вас модуль php, выполнив dpkg -l |grep mod-php Попробуй переустановить, удалив с помощью purge и снова установил