【发布时间】: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 错误锁了解更多详情
-
抱歉,更新了
.htaccess和error.log文件的问题
标签: php linux apache ftp chown