【问题标题】:php failed to open stream: No such file or directoryphp 无法打开流:没有这样的文件或目录
【发布时间】:2015-11-13 01:29:27
【问题描述】:

我有 3 个文件:database.php、initialize.php 和 config.php。 这 3 个文件位于名为:

的文件夹下
usr/loca/nginx/html/phpcode/php/999_projects/test/include/

database.php

<?php

echo "before";
require_once('initialize.php');
echo "after";

echo LIB_PATH;
?>

initialize.php

<?php

// DIRECTORY_SEPARATOR is a PHP pre-defined constant
// (\ for Windows, / for Unix)
defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR);

defined('SITE_ROOT') ? null : 
    define('SITE_ROOT', $_SERVER["DOCUMENT_ROOT"].DS.'phpcode'.DS.'php'.DS.'999_projects'.DS.'test');

defined('LIB_PATH') ? null : define('LIB_PATH', SITE_ROOT.DS.'includes');

// load config file first
require_once(LIB_PATH.DS.'config.php');
?>

config.php

<?php

// Database Constants

defined('MYSQL_DSN') ? null : define("MYSQL_DSN", "mysql:host=localhost;dbname=talkback");
defined('DB_USER')   ? null : define("DB_USER", "user");
defined('DB_PASS')   ? null : define("DB_PASS", "pass");

?>

运行 database.php 后,我得到以下信息:

警告: 需要一次(/usr/local/nginx/html/phpcode/php/999_projects/test/includes/config.php): 无法打开流:中没有这样的文件或目录 /usr/local/nginx/html/phpcode/php/999_projects/test/include/initialize.php 第 16 行

致命错误:require_once():需要打开失败 '/usr/local/nginx/html/phpcode/php/999_projects/talkback/includes/config.php' (include_path='.:/usr/share/php:/usr/share/pear') 在 /usr/local/nginx/html/phpcode/php/999_projects/talkback/include/initialize.php 第 16 行

这 3 个文件具有适当的权限,并且 Web 服务器也有权访问这些文件。

过去几个小时(!)我已经尝试修复它,但是,我找不到我缺少的东西。

有人可以帮忙吗?

谢谢,

Qwerty

【问题讨论】:

标签: php


【解决方案1】:

我想是因为你写了这个:

define('LIB_PATH', SITE_ROOT.DS.'includes');

...而实际上你的意思是写这个,没有's':

define('LIB_PATH', SITE_ROOT.DS.'include');

我是从每个错误的最后一点推断出这一点 - 似乎包含另外两个的文件位于“包含”而不是“包含”目录中?

/usr/local/nginx/html/phpcode/php/999_projects/talkback/include/initialize.php on line 16

【讨论】:

  • 是的,是的,是的!!!这意味着我现在需要休息一下如果没有抓住它应该是“包含”而不是“包含”。所以下次,如果我没有那个文件或目录,php是没有错的。是编码员指定了错误的路径!!!
  • 我已经为这个常见错误开始了一个故障排除清单:stackoverflow.com/a/36577021/2873507
【解决方案2】:

嗯,你说的位置与错误中的位置不匹配。

你说它们都位于:

/usr/loca/nginx/html/phpcode/php/999_projects/test/include/

但错误说:

/usr/local/nginx/html/phpcode/php/999_projects/talkback/include/

一个说“对讲”,一个说“测试”。一个还说“包含”,而另一个说“包含”但是,如果你确定它们在同一个文件夹下,或者那些是正确的位置,那么网络服务器很可能没有读取权限文件。

您可以检查文件路径是否正确但进入终端,然后输入:

cat /usr/local/nginx/html/phpcode/php/999_projects/talkback/includes/config.php

如果可行,则路径正确,这将是权限问题,您可以使用 ls -l 检查,并使用 chmod 命令进行更改(通常 chmod 755 可以正常工作)。

【讨论】:

  • 您好,错误指向“测试”。问题出在我指定的路径位置。还是谢谢。
猜你喜欢
  • 2016-08-03
  • 1970-01-01
  • 1970-01-01
  • 2020-08-11
  • 2011-05-27
相关资源
最近更新 更多