【发布时间】:2015-08-12 20:18:42
【问题描述】:
我正在将 PHP 网站从共享托管服务器移动到 DigitalOcean 服务器。我遇到了一个不知道如何调试的问题。
有一个带有action=2/login.php 的登录表单的页面。此表单位于/var/www/html/calendar.php(它是一个 Ubuntu 14.04 DO droplet)。提交表单时,有一个500 Internal Server Error。我发现了有问题的错误,但我不确定如何调试它(因为它在另一台服务器上运行良好)。
/var/www/html/2/login.php
<?php
require_once('../db_connect.php');
...
db_connect.php 位于/var/www/html/db_connect.php
当我$php 2/login.php 时出现以下错误:
login_error.txt
PHP Warning: require_once(../db_connect.php): failed to open stream: No such file or directory in /var/www/html/2/login.php on line 4
PHP Fatal error: require_once(): Failed opening required '../db_connect.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/html/2/login.php on line 4
当我在目录/var/www/html/2 中运行$php login.php 时,它工作正常(我想这是有道理的,因为../db_connect.php 是一个相对路径)。
我想知道为什么它在其他服务器而不是 DO 服务器上工作?
php.ini 是一样的(这可能是个问题),但在服务器 #1 (Verve) 上,它是共享主机,所以我们的根是 /home/[username]/public_html,而在新服务器上是 /var/www/html。
如有必要,我可以链接到相关的实时网站(但不希望这样做)。 /var/www/html/2/login.php 和 /var/www/html/calendar.php 脚本完全相同,虽然我知道这肯定会在以后引起问题,因为 Web 应用程序根目录的绝对路径不同,但我不知道是什么导致了这个特定的问题。
我也看过这个非常相似的问题:PHP require_once resetting to current working directory。但是,此代码在另一台服务器上工作,而不是在这里,所以我认为不仅仅是缺少相对文件路径,我更愿意找到解释为什么脚本不工作的解决方案而不是修补脚本,因为我很确定我也必须更改使用require_once('../db_connect.php') 的所有其他脚本。
感谢您的帮助!
【问题讨论】:
-
重复问题。遵循以下链。 stackoverflow.com/questions/2253625/…
-
您链接的问题与我的相似,但我问的是不同的问题。我知道什么可以解决我的问题,但我想知道问题的根本原因是什么(为什么原始代码在第一台服务器上工作而不是第二台服务器?)。我已经编辑了我的问题以反映这一点。感谢您的链接!这些信息仍然有用。
标签: php require-once