Apache不会在Raspberry Pi上打开页面

use*_*068 3 php apache http-status-code-403 raspberry-pi

我已经在我的Raspberry Pi上安装了Apache 2,并且当我请求index.php它加载时,但是当我尝试请求任何子文件夹或任何其他文件时(strandsort.cs在这个例子中 - 也可以是anything.txt,只是不是HTML /要得到解析的PHP),403 access denied但是当我请求应该解析的文件时(i2.php)我得到一个空白页面.

也许值得注意,phpmyadmin似乎工作正常.

我配置了以下配置:

/etc/apache2/sites-enabled/000-default
Run Code Online (Sandbox Code Playgroud)

并设置AllowOverrideALL.

这是错误:

PHP Warning:  Unknown: failed to open stream: Permission denied in Unknown on line 0, referer: http://raspberryIP/
PHP Fatal error:  Unknown: Failed opening required '/var/www/i2.php' (include_path='.:/usr/share/php$ http://raspberryIP/
Run Code Online (Sandbox Code Playgroud)

其中"RaspberryIP"是设备的IP地址.

Jak*_*uld 7

错误是:

PHP Warning:  Unknown: failed to open stream: Permission denied in Unknown on line 0, referer: http://raspberryIP/
PHP Fatal error:  Unknown: Failed opening required '/var/www/i2.php' (include_path='.:/usr/share/php$ http://raspberryIP/
Run Code Online (Sandbox Code Playgroud)

所以这似乎是文件的权限问题/var/www/i2.php.用户拥有该文件的内容是什么?Apache能够读取该文件吗?如果从命令行运行此命令,输出结果是什么:

ls -la /var/www/i2.php
Run Code Online (Sandbox Code Playgroud)

另外,Apache错误日志说了什么?它们应位于:

/var/log/apache2/access.log
/var/log/apache2/error.log
Run Code Online (Sandbox Code Playgroud)

你可以tail像这样跟随他们的输出:

sudo tail -f -n 200 /var/log/apache2/access.log
sudo tail -f -n 200 /var/log/apache2/error.log
Run Code Online (Sandbox Code Playgroud)

这些路径基于标准的Ubuntu 12.04安装,但对于CentOS以及您在Raspberry PI中使用的任何Debian变体应该是相同的.

您知道,这个问题对于Raspberry PI设置并不特殊,但实际上是标准的Linux Apache服务问题.因此,用于成熟服务器的调试技术也可以在这里工作.

另外,您的/etc/apache2/sites-available/default文件内容是什么?这是真正的文件,/etc/apache2/sites-enabled/000-default只是一个符号链接.默认的Apache default文件可能会令人困惑并包含大量冗余命令.这是我在Ubuntu中设置Apache时要使用的精简版本:

<VirtualHost *:80>
  DocumentRoot /var/www

  CustomLog ${APACHE_LOG_DIR}/access.log combined
  ErrorLog ${APACHE_LOG_DIR}/error.log

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

</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

注意这里没有AllowOverride All.整个目的AllowOverride是允许解析.htaccess文件并在此阶段不应该是一个因素.如果您认为需要,可以将其添加到此配置中,如下所示:

<VirtualHost *:80>
  DocumentRoot /var/www

  CustomLog ${APACHE_LOG_DIR}/access.log combined
  ErrorLog ${APACHE_LOG_DIR}/error.log

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

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

</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

编辑:原始海报发布的ls -la输出如下:

-rw------- 1 pi www-data 21 May  1 14:10 /var/www/i2.php
Run Code Online (Sandbox Code Playgroud)

这似乎是正确的,但我建议至少尝试调整权限,以便所有人都能读取这样的文件:

sudo chmod a+r /var/www/i2.php
Run Code Online (Sandbox Code Playgroud)

此外,在Apache中access.log- 原始海报也在评论中提供 - 它说:

[Sun May 04 18:00:02 2014] [error] [client 127.0.0.1] PHP Fatal error:  Unknown: Failed opening required '/var/www/i2.php' (include_path='.:/usr/share/php:/usr/share/pear') in Unknown on line 0
Run Code Online (Sandbox Code Playgroud)

这让我觉得PHP编码中存在错误i2.php?你能检查那里的内容吗?可能只是创建一个简单的PHP文件,只有以下内容才能看到会发生什么:

<?php
echo "Hello world!";
?>
Run Code Online (Sandbox Code Playgroud)

所有这一切,也许最好是调整整个 /var/www/目录的权限,就像这样.

sudo chmod -R 755 /var/www/
Run Code Online (Sandbox Code Playgroud)

755适用的读,写和为业主执行权限和读取和执行本集团及其他权限.该-R标志表明这应该是整个/var/www/目录和子文件夹的递归.

另一个编辑:看看原始海报access.log,似乎可能有一个权限问题直接连接到.htaccess:

[Sun May 04 17:46:10 2014] [crit] [client 192.168.1.2] (13)Permission denied: /var/www/js/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable
[Sun May 04 17:46:11 2014] [crit] [client 192.168.1.2] (13)Permission denied: /var/www/js/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable
[Sun May 04 17:46:11 2014] [crit] [client 192.168.1.2] (13)Permission denied: /var/www/js/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable
[Sun May 04 17:46:11 2014] [crit] [client 192.168.1.2] (13)Permission denied: /var/www/js/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable
[Sun May 04 17:46:12 2014] [crit] [client 192.168.1.2] (13)Permission denied: /var/www/js/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable
[Sun May 04 17:46:12 2014] [crit] [client 192.168.1.2] (13)Permission denied: /var/www/js/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable
[Sun May 04 17:46:12 2014] [crit] [client 192.168.1.2] (13)Permission denied: /var/www/js/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable
Run Code Online (Sandbox Code Playgroud)

因此,在进行一揽子权限更改/var/www/解决问题的同时,也许权限问题基于/var/www/js/.htaccess甚至是父/var/www/js/目录?我指出这一点的原因是sudo chmod -R 755 /var/www/可以解决问题的一揽子权限更改,但有时最好知道确切问题的来源,以便您不会对实际发生的事情感到困惑.

  • +1用于提供解决问题的技术以供将来使用. (2认同)