【发布时间】:2013-04-23 23:17:22
【问题描述】:
我正在使用 MAMP 在本地托管一个网站。我已经正确设置了虚拟主机,并且当我引用本地 URL 时 index.php 文件确实被拉起:my.example.local
问题是 PHP 文件包含不起作用。以下是代码示例:
<?php
session_start();
$_SESSION['message'] = '';
require_once "includes/config.php";
require_once "includes/classes/facilities.class.php";
require_once "includes/classes/states.class.php";
$title = "Home";
$sub_title = $title;
$reset = false;
require_once "includes/header.php";
?>
这是我在访问 index.php 时收到的错误消息:
Warning: require_once(includes/classes/facilities.class.php): failed to open stream: No such file or directory in /Users/userName/IOD/portal/index.php on line 9
Fatal error: require_once(): Failed opening required 'includes/classes/facilities.class.php' (include_path='.:/Applications/MAMP/bin/php/php5.4.10/lib/php') in /Users/userName/IOD/portal/index.php on line 9
作为记录,我尝试了多种不同的方式来引用文件路径、相对、绝对、使用主机名等。
我愿意尝试任何事情,但到目前为止还没有运气。哦,在你问之前,是的,文件在引用的位置,但由于某种原因,(本地)服务器似乎不认为它们是。
注意:这在 Web 服务器上运行良好,我试图在本地托管它以实现版本控制,以便我可以在本地开发并将更改推送到服务器。
【问题讨论】:
-
第一个require_once没有错误?如果注释掉facility.class.php 的require_once,states.class.php 的require_once 会失败吗?
-
会不会是文件权限错误?不确定 MAMP,但是在 LAMP 堆栈上,您和 apache 用户(通常是 www-data)最初不在同一个组中的情况经常发生
-
您应该检查该文件是否真的存在并且是否可读。查看
is_file('includes/classes/facilities.class.php')和is_readable('includes/classes/facilities.class.php')