Поэтому я настроил свой сервер, используя это руководство , и когда файл test.php работает без проблем, когда я ввожу адрес, используя IP-адрес моего сервера, как
http://1.2.3.4/test.php
Однако, если я использую виртуальные хосты, браузер просто предлагает загрузить файл, а не выполнить его. Итак, это:
http://blog.mydomain.com/test.php
предлагает скачать файл, а не выполнять сценарий.
Код, который я использую в /etc/apache2/apache2.conf для виртуальных хостов, выглядит следующим образом:
Include /etc/phpmyadmin/apache.conf
Include /etc/apache2/mods-available/php5.conf
<VirtualHost *:80>
DocumentRoot /path/to/vhosts/folder1
ServerName www.mydomain.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /path/to/vhosts/folder2
ServerName blog.mydomain.com
</VirtualHost>
NameVirtualHost *:80
Хотя я должен сказать, что при перезапуске сервера apache2 я получаю предупреждение:
[....] Restarting web server: apache2
[Sun Jan 19 13:33:40 2014] [warn] NameVirtualHost *:80 has no VirtualHosts ... waiting [Sun Jan 19 13:33:41 2014] [warn] NameVirtualHost *:80 has no VirtualHosts
Я получил его для работы со строкой:
sudo apt-get install libapache2-mod-php7.0
sudo service apache2 restart
Иногда могут случиться еще худшие вещи ... Я просто забыл установить php
Я нашел решение здесь . Оказывается, мне пришлось включить некоторые модули ...
Взято из этого ответа о переполнении стека пользователем user1075581 :
Это, наконец, поставило меня на правильный путь:
Вот решение:
В раздел
<Directory>
я включил следующие строки:<IfModule sapi_apache2.c> php_admin_flag engine on </IfModule> <IfModule mod_php5.c> php_admin_flag engine on </IfModule>
Или, отредактированная копия / вставка решения на моем сервере:
<Directory "/var/www/vhosts/A2/httpdocs"> <IfModule sapi_apache2.c> php_admin_flag engine on </IfModule> <IfModule mod_php5.c> php_admin_flag engine on </IfModule> (Other configuration parameters) </Directory>
Я долго искал это, и я только нашел решение, которое работает в моем случае. Я поместил свой файл (processorder.php5
) в каталог /var/www
в стандартной установке Ubuntu. Я думал, что это место, которое посмотрел php. Но для html (или php-файлов, которые, вероятно, считаются одним и тем же), это выглядело в /var/www/html
, то есть в подкаталоге html
в /var/www
.
Когда я переместил свой файл в каталог, он работал. Я подозреваю, потому что я не думаю, что я видел это где-то задокументировано
проблемы с разрешениями также могут привести к этому странному поведению
chmod -R u=rwX,go=rX my_publishing_directory
избавят от проблем с разрешениями (644 для файлов и 755 для каталогов)