无法解释的 PHP 错误(内部服务器错误 500)

Unexplained PHP error (Internal Server Error 500)

我最近将我的网站从共享网络主机移到了 VPS,并配置了 apache2/vsftpd 和其他东西。

经过一天的折腾,我终于可以正常工作了,但是,我在浏览器中加载 PHP 文件时遇到了问题。

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

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

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

所以,我创建了一个新页面,通过 vsftpd 上传并用我的浏览器打开它,因为我没有发布任何我期望它回显 "No POST data" 的东西,就像我之前那样在未设置 $_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 returns No syntax errors detected in myfile.php
目前该文件仅包含 <?php echo "Test"; ?> 而仍然没有任何内容。
FTP 用户具有上传、覆盖、删除文件和 create/delete 目录的适当权限
我尝试删除 file/reuploading、重新启动 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= [L]

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

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


编辑:完全删除文件,并以 root 身份创建一个新文件(在浏览器中显示)。但是,我无法以 FTP 用户身份 over-write/alter 文件。

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

我刚刚再次 chown 我的 ftp 用户 myFile.php 以将我的 ftp 用户返回 ownership/permissions 到该文件。

网站上的所有其他 files/directories 都归我的 ftp 用户所有,所以我不知道怎么会这样。

看起来您需要将您的 FTP 用户添加到 www-data 组并将您的项目组设为 readable/writeable。