Мне сказали в 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
и снова установил