Php 文件存在问题

Php 文件存在问题,php,codeigniter,Php,Codeigniter,我正在尝试使用file_exists函数调试以下代码。我在阿凡达目录上运行了一个var_转储,它总是返回bool(false)。我不知道为什么。我测试了下面的代码,它到达文件存在,但每次都证明if语句为false。有什么想法吗?我已经看过了,并且图像正确地位于目录中 $default_avatar = 'default.jpg'; $avatar_directory = base_url() . 'assets/globals/images/avatars/'; if (!is_null($us

我正在尝试使用file_exists函数调试以下代码。我在阿凡达目录上运行了一个var_转储,它总是返回bool(false)。我不知道为什么。我测试了下面的代码,它到达文件存在,但每次都证明if语句为false。有什么想法吗?我已经看过了,并且图像正确地位于目录中

$default_avatar = 'default.jpg';
$avatar_directory = base_url() . 'assets/globals/images/avatars/';
if (!is_null($user_data->avatar))
{
    $avatar = $avatar_directory . $user_data->avatar;
    if (file_exists($avatar))
    {
        $user_data->avatar = $avatar_directory . $user_data->avatar;
    }
    else
    {
        $user_data->avatar = $avatar_directory . $default_avatar;
    }
}
else
{
    $user_data->avatar = $default_avatar;
}

从名称
base\u url
看,似乎是一个函数,可以获得类似
http://www.mysite.com
,这不适用于执行本地目录功能

你需要一个完整的路径

getcwd将获取当前工作目录(执行初始脚本的目录):


从名称
base\u url
看,似乎是一个函数,可以获得类似
http://www.mysite.com
,这不适用于执行本地目录功能

你需要一个完整的路径

getcwd将获取当前工作目录(执行初始脚本的目录):


假设您的意思是base_url()指向项目的根-

   $file = __DIR__ . "/path/to/file.ext";

   if (file_exists($file)) {

       //...

   }
或其一些变体。这也适用于:

   __DIR__ . "/.."
  • 它解析为
    的父目录
请参见PHP的神奇常量:

如果您正在寻找一个远程资源——一个不在本地文件系统上的文件——您必须更改php.ini以允许这样做。这可能不是一个好主意,这通常被认为是不安全的。一点也不

并请注意:

"This function returns FALSE for files inaccessible due to safe mode restrictions. However these files still can be included if they are located in safe_mode_include_dir."
--从


--编辑以根据OP.的评论添加相关信息。

假设您的意思是base_url()指向项目的根-

   $file = __DIR__ . "/path/to/file.ext";

   if (file_exists($file)) {

       //...

   }
或其一些变体。这也适用于:

   __DIR__ . "/.."
  • 它解析为
    的父目录
请参见PHP的神奇常量:

如果您正在寻找一个远程资源——一个不在本地文件系统上的文件——您必须更改php.ini以允许这样做。这可能不是一个好主意,这通常被认为是不安全的。一点也不

并请注意:

"This function returns FALSE for files inaccessible due to safe mode restrictions. However these files still can be included if they are located in safe_mode_include_dir."
--从


--编辑以根据OP.的评论添加相关信息。

这在CLI和通过Apache等方面都有效:

$avatar_directory = substr(str_replace(pathinfo(__FILE__, PATHINFO_BASENAME), '', __FILE__), 0, -1) . '/assets/globals/images/avatars/'

返回的did是php文件本身所在的did,而不是根目录。

这可以通过CLI和Apache等方式工作:

$avatar_directory = substr(str_replace(pathinfo(__FILE__, PATHINFO_BASENAME), '', __FILE__), 0, -1) . '/assets/globals/images/avatars/'

返回的did是php文件本身所在的目录,而不是根目录。

基本url()的值是多少?
?最简单的方法是回显
$avatar
,并根据您的foldr结构检查其路径是否正确。为什么要尝试将url用于本地目录?这不是基本url()
的目的。你需要文件的本地路径…你说@ppeterka是什么意思?
base\u url()
的值是什么?最简单的方法是回显
$avatar
,并根据你的foldr结构检查它的路径是否正确。为什么你要尝试将url用于本地目录?这不是
base\u url()
的目的。你需要文件的本地路径…你说@ppeterka是什么意思?这不是本地目录,尽管这是一个实时url。用于查看本地文件是否存在,而不是url是否可读。这不适用于本地目录,尽管这是一个实时url。用于查看本地文件是否存在,而不是url是否可读。这是index.php中定义的codeigniter常量。因此,您应该在此问题中添加一个
codeigniter
标记
FCPATH
是此文件的完整服务器路径。定义为
define('FCPATH',文件)
Reference@user2576961,这仍然是一个本地文件,而不是您在我的回答中所说的url。这是index.php中定义的codeigniter常量。因此,您应该在此问题中添加一个
codeigniter
标记
FCPATH
是此文件的完整服务器路径。定义为
define('FCPATH',文件)
Reference@user2576961,这仍然是一个本地文件,而不是像你说的你想要我的答案那样的url