PHP 为 root 用户执行,但不为其他用户执行(apache2 虚拟)

PHP 为 root 用户执行,但不为其他用户执行(apache2 虚拟)

因此,我建立了一个/var/www由 root 拥有的站点,可以毫无问题地运行 PHP。

我创建了一个用户,将其添加www-data到该用户组,并设置了一个指向的虚拟站点/home/user/public_html。我成功浏览到与该虚拟站点关联的域,并且它从那里加载 HTML 没有任何问题。

但是,当我创建index.php并输入一些简单的 php( <?php echo '<h1>test</h1>'; ?>) 时,它会显示 php 源代码。

根拥有的站点中的 PHP 运行良好;用户拥有的站点中的 PHP 显示源代码。

所以我知道 php 正在与 apache2 一起工作,只是没有用户参与。

PHP 是否以 www-data 以外的其他方式运行?那么我是否需要像我所做的那样将其他用户添加到我的用户组中www-data

这有道理吗?提前感谢帮助...我正在慢慢学习。:)

答案1

默认情况下,php 在 /home/*/public_html 中被明确禁用。要在 ubuntu 14.04 上更改此设置,

cd /etc/apache2/mods-enabled/
sudo cp php5.conf my-php5.conf
sudo rm php5.conf

并通过更改行来编辑 my-php5.conf

<IfModule mod_userdir.c>
   <Directory /home/*/public_html>
      php_admin_flag engine Off
   </Directory>
</IfModule>

<IfModule mod_userdir.c>
   <Directory /home/*/public_html>
      # php_admin_flag engine Off
   </Directory>
</IfModule>

然后重新启动 apache

sudo /etc/init.d/apache2 restart

对于其他版本的 ubuntu,这些命令可能需要进行一些更改。

相关内容