【发布时间】:2015-08-29 20:06:07
【问题描述】:
我已经设置了一个简单的虚拟主机。
只是在底部添加了这些行
<VirtualHost *:80>
ServerAdmin webmaster@yourdomain.com
DocumentRoot "/var/www/Reminder/"
<Directory "/var/www/Reminder">
AllowOverride all
Require all granted
php_admin_value open_basedir "/var/www/Reminder/"
</Directory>
php_admin_value open_basedir "/var/www/Reminder/"
ServerName test.mydomain.com
ErrorLog "logs/yourdomain.com-error_log"
CustomLog "logs/yourdomain.com-access_log" common
</VirtualHost>
我基本上想要的是,虽然从 Reminder 文件夹内的文件中包含 php 中的文件,但如果我给出一个绝对路径,例如 "/test/" ,它应该将 Reminder 文件夹视为根,并搜索测试提醒里面的文件夹。
现在,当我输入 echo DIR 时,会显示 /var/www/Reminder。
我的文件结构是:
/var/www/Reminder/database/db_connect.php /var/www/Reminder/registration/registration_handler.php
这就是我的 db_connect.php 所拥有的:
<?php
define('DBHOST','localhost');
define('DBUSER','root');
define('DBPASS','password');
define('DBNAME','Reminder');
$conn=mysqli_connect(DBHOST,DBUSER,DBPASS) ;
if(!$conn) {
echo mysqli_connect_error();
}
else {
echo "connected successfully";
}
?>
这是我的registration_handler拥有的:
<?php
echo "hi";
echo __DIR__;
require_once("/database/db_connect.php");
mysqli_query($conn,"INSERT INTO users () VALUES ()") or die (mysqli_error($conn));
?>
我相信,如果一切正常,如果我运行registration_handler.php,我应该能够获得“连接成功”消息(来自db_connect),但那没有发生。
当我包含这样的相同文件时:require_once("../database/db_connect.php"); ,我得到输出
【问题讨论】:
-
What I basically want is, ..., if I give an absolute path, ..., it should consider the Reminder folder as the rootphp 不能这样工作——也不应该这样。 -
但是,当我在 hostgater 之类的地方托管一些文件时,执行 '/' 会为我提供网站根目录的路径。
标签: php virtualhost