【问题标题】:Linux Apache2 giving error for non existing php file when it doesLinux Apache2 在执行时对不存在的 php 文件给出错误
【发布时间】:2014-10-17 22:11:05
【问题描述】:

现在我正在使用安装了 Ubuntu 14 和 apache2 的 VPS。

我将我的网站从旧主机转移到新主机,我开始收到一些非常奇怪的问题。

在这里您可以看到有关我拥有的 PHP 版本和模块的更多信息: http://www.crankpost.com/phpinfo.php

这是我在 .htaccess 文件中的内容:

Options +FollowSymlinks
 RewriteEngine On
 RewriteCond %{HTTP_HOST} ^crankpost.com [NC]
 RewriteRule ^(.*)$ http://www.crankpost.com/$1 [L,R=301]
 RewriteRule ^home mhome.php
 RewriteRule ^checklogin clogin.php 
 RewriteRule ^login login.php  
 RewriteRule ^logout log-out.php 
 RewriteRule ^registration createacc.php  
 RewriteRule ^create-account register.php  
 RewriteRule ^confirm-email=([^/.]+)?$ activateacc.php?id=$1 [L]
 RewriteRule ^profile=([^/.]+)?$ member.php?id=$1 [L]

有一个很奇怪的问题。 当我尝试打开这个 URL:http://www.crankpost.com/post.php 时,服务器给我一个错误,当这个文件实际存在时,这个文件没有打开。

他与 index.php 位于同一目录中,不知何故它给了我一个错误,即该文件实际上存在时不存在。

问题出在哪里,你们能帮帮我吗?

提前致谢!

【问题讨论】:

    标签: linux apache .htaccess ubuntu


    【解决方案1】:

    这可能是文件权限 - 文件夹和文件。您必须确保您的 Apache 用户 - 默认情况下,www-data - 具有访问权限。您可以将 755 用于 PHP 文件,将 644 用于几乎所有其他文件。

    如果您不熟悉文件权限,但正在使用 FileZilla 或 WinSCP 之类的工具,请从文档根目录开始找到文件和父文件夹,并确保:

    • 拥有用户具有读取、写入和执行权限。
    • 用户的组和“其他人”具有读取权限。

    根据您的 PHP 设置,文件夹不需要可执行位。

    但基本上,只要 Apache 报告文件不存在而实际存在,则很可能是与文件权限相关的问题。 PHP 只需要对文件有 Read 和 sometimes Execute 权限,但总是对它必须遍历的文件夹有 Execute 权限。

    希望对您有所帮助。

    【讨论】:

    • AFAIK 目录需要可执行的事实是 Linux/Unix 的事情,与 php 设置无关?
    • @fvu 确实必须这样做。各种标志定义了应用程序(如 PHP)可以访问文件的行为。如果 PHP 无法读取文件,因为它运行的用户没有,那么它也会失败。
    • @fvu:有一个名为xbithack 的配置选项将php 解析器配置为仅将可执行位设置为php 源文件的文件处理。优点是 any 可执行文件被视为 php 源文件,无论扩展名如何。
    • 我在 post.php 上拥有与 index.php 相同的文件权限,它们是 644。index.php 文件正常打开,但 post.php 不知何故不想要。跨度>
    • @MarkusWMahlberg 他在谈论 目录,因此我持怀疑态度 - 试试如果删除目录上的 x 位会发生什么(目录和包含的文件变得无法访问)
    猜你喜欢
    • 1970-01-01
    • 2017-10-21
    • 2020-11-27
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    • 2021-10-11
    • 1970-01-01
    相关资源
    最近更新 更多