1

使用 Nginx 在 CentOS 6.4 x64 上运行 PHP 5.5.5 FPM/FastCGI。

require_once(dirname(__FILE__) . '/adminsetting.php') or die();

返回以下错误:

PHP Fatal error:  require_once(): Failed opening required '1'
(include_path='.:/usr/share/pear:/usr/share/php') in
/home/vincek/public_html/plg/index.php on line 4

该文件adminsetting.php位于相同的目录中index.php并且存在。

我已经仔细检查了我能想到的一切,php 正在当前用户下运行,所有所有权和权限都是正确的。

我不知道为什么找不到这个文件。

我需要在我的 vhost.conf 中为这个目录设置一个单独的位置块吗?

--EDIT-- 要求附加代码:

来自 index.php:

session_start();
$base_path=substr($_SERVER['SCRIPT_FILENAME'] , 0 , -strlen($_SERVER['PHP_SELF'])+0).dirname($_SERVER['PHP_SELF']);
require_once(dirname(__FILE__) . '/adminsetting.php');
setcookie("usercheck", " ", time()-60*5);
include($require_path."/functions.php");
if($datastoreselected=="2")include_once($mysql_path."/connection.php");
include("header.php");
include("side.php");
... etc ...

从 adminsetting.php:

$root_path="/home/vincek/public_html/plg";
$base_path="/home/vincek/public_html/plg";
$adminurl="http://vincek.co";
$admininstalldirectory="/plg";
$base_url="http://vincek.co/plg/";
$site_title="Power Link Generator v4.8";
$require_path="/home/vincek/public_html/plg/include";
$template_path="/home/vincek/public_html/plg/templates";
$mysql_path="/home/vincek/public_html/plg/mysql";
$image_path="http://vincek.co/plg/images";
$adminbase="/home/vincek/public_html/";
... etc ...

如果adminsetting文件被包含...为什么找不到被调用的变量?

4

3 回答 3

3

陷阱在于它require_once是一个语句,而不是一个函数,因此文件名周围的括号具有误导性。实际运行的内容与require_once ('something.php' or die);which become require_once true;and thennce相同require_once '1';,这解释了错误消息。

正如其他人指出的那样,require_once无论如何都会自行消亡,但如果您确实想使用include_once这个成语,则需要以不同的方式排列括号:(include_once 'something.php') or die;

于 2013-11-01T23:20:56.727 回答
2

改变

<?

<?php

在您包含的文件中。

<?不能在最新的 php 版本中使用(如果您不进行配置更改)。

于 2014-02-28T13:27:17.877 回答
2

Require 不返回值,所以它总是会死在你的or die(). 利用

require_once(dirname(__FILE__) . '/adminsetting.php');

如果失败,无论如何都会导致致命错误。这就是 require 所做的:它包含一个脚本,或者因失败而死

编辑:

您的 adminsetting 文件被解释为文本,我不明白为什么。<?它可能有一些与您的代码块混淆的字符。我已经看到它发生在具有空字符的 XML 文件中(在一些聪明人用 Word 编辑了 XML 文件,并等待我的解析器完成剩下的工作之后)。我现在最好的建议是将 adminsetting 文件移到其他地方,创建一个新的 adminsetting 文件,自己编写 php 代码块,然后将其余代码复制到新文件中。问题必须是adminsetting文件,没有别的。

于 2013-11-01T23:08:45.637 回答