【问题标题】:Unexplained PHP error (Internal Server Error 500)无法解释的 PHP 错误(内部服务器错误 500)
【发布时间】:2015-07-27 09:17:09
【问题描述】:

我最近将我的网站从共享网络主机转移到 VPS,并配置了 apache2/vsftpd 等。

在搞砸了一天之后,我终于把一切都搞定了,但是,我在浏览器中加载 PHP 文件时遇到了问题。

PHP 没有显示任何错误,当我在 chrome 中点击 F12 时,我在加载时看到控制台日志闪烁说 GET: [mydomain]/api/myfile.php 500 (Internal Server Error)

我认为这与我试图在文件中执行的操作有关,但在表单所在的页面中并且 jQuery 正在调用它时它工作得很好。

但是,由于我想返回特定的消息(并且只是那些消息),所以我希望它在一个空白页面上,这样我就可以将它们回显出来。

所以,我创建了一个新页面,通过vsftpd 上传并用我的浏览器打开它,因为我没有发布任何我期望它响应“无 POST 数据”的内容,就像我在$_POST['userStatus'] 没有设置,但只有一个空白页。

我尝试将文件更改为 <?php echo "Test"; ?> 但这也没有用。我遇到了同样的错误。

我想可能是www-data的权限无法访问,

所以我做了chown -R www-data /home/myuser/mysite/public_html,并重新启动了 apache2,但仍然没有运气。 它实际上不允许我的 FTP 用户继续上传,所以我不得不chown -R myuser /home/myuser/mysite/public_html 让它再次工作。

可能是有权限的东西吗?也许apache中的配置错误?

我的.htaccess 文件自上次正常工作以来一直没有更改,所以我不太确定这是否是罪魁祸首。


如果它很重要:

我在 Debian Wheezy 上运行 Apache2.2
我的 php.ini 文件设置为显示错误
我添加了error_reporting(E_ALL)ini_set('display_errors', 1) 但仍然没有错误
php -l myfile.php 返回No syntax errors detected in myfile.php
目前该文件只包含<?php echo "Test"; ?>,但仍然没有。
FTP 用户具有上传、覆盖、删除文件和创建/删除目录的适当权限
我尝试删除文件/重新上传,重新启动 apache,并尝试以 root 身份创建文件(使用 vim
我已经尝试Empty Cache and Hard Reload 以确保它不只是加载页面的缓存版本

站点的其余部分和子域可以完美运行。


我的/var/log/apache2/error.log 文件:

[Mon Jul 27 05:16:45 2015] [error] [client] PHP Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0 [Mon Jul 27 05:16:45 2015] [error] [client] PHP Fatal error: Unknown: Failed opening required '/path/to/dir/api/myfile.php' (include_path='.:/usr/share/php:/usr/share/pear') in Unknown on line 0


我的.htaccess 文件:

RewriteEngine On
Options -Indexes

ErrorDocument 404 https://my-main-site/404
ErrorDocument 403 https://my-main-site/404
ErrorDocument 500 https://my-main-site/500.shtml

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^u/(.*)$ /profile.php?user=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^u/(.*)/friends$ /profile.php?user=$1&friends [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^404$ /x/includes/errors/404.php [L]


编辑:完全删除文件,并以root身份创建一个新文件(显示在浏览器中)。但是,我不能以 FTP 用户的身份覆盖/更改文件。

执行chown www-data myFile.php 和/或chown myftpuser myFile.php 都会使文件无法再次加载。

我刚刚再次 chown myftpuser myFile.php 让我的 ftp 用户重新获得该文件的所有权/权限。

站点上的所有其他文件/目录都归我的 ftp 用户所有,所以我不知道这会如何发生。

【问题讨论】:

  • 发布您的.htaccess 文件。
  • 你检查过httpd和php错误日志文件了吗?
  • 查看 apache 错误锁了解更多详情
  • 抱歉,更新了.htaccesserror.log 文件的问题

标签: php linux apache ftp chown


【解决方案1】:

看起来您需要将您的 FTP 用户添加到 www-data 组并使您的项目组可读/可写。

【讨论】:

    猜你喜欢
    • 2014-06-08
    • 2018-01-15
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多