【问题标题】:What is the correct format for a directory path when using PHP's opendir()?使用 PHP 的 opendir() 时目录路径的正确格式是什么?
【发布时间】:2012-11-04 01:46:28
【问题描述】:

我在使用opendir() 时遇到了文件路径问题。我收到以下警告:

PHP 警告:opendir(/uploads/users/405/images/profile/profilepic/) [function.opendir]:无法打开目录: 在......中没有该文件或目录 /home/my_folder/public_html/models/photos.php 在第 1059 行

photos.php 中的第 1059 行有以下内容:

if ( ( $handle = opendir( $profile_pic_path ) ) ) { // do stuff }

地点:

$profile_pic_path = '/uploads/users/405/images/profile/profilepic/';

我尝试了几种不同的方法,但无法正常工作(我的错误日志中不断收到 PHP 警告消息)。

我做错了什么?

【问题讨论】:

  • 那个目录真的存在吗?在大多数系统上,文件系统根目录中名为 uploads 的目录会很奇怪。
  • 格式正确。您确定上传文件夹位于 webroot 中吗
  • 是的,uploads 在 public_html 中。

标签: php filepath opendir


【解决方案1】:

/在路径的开头意味着-绝对路径。

你应该使用绝对或相对路径:

$profile_pic_path = dirname(__FILE__).'/uploads/users/405/images/profile/profilepic/';

或

$profile_pic_path = 'uploads/users/405/images/profile/profilepic/';

如果您的脚本位于上传目录所在的同一目录中,则此方法有效。

如果您的脚本在子目录中(例如 lib/tests/test.php),并且您没有初始化全局 $basepath:

$profile_pic_path = dirname(dirname(dirname(__FILE__)))
                    .'/uploads/users/405/images/profile/profilepic/';

通常在逻辑顶部的某个地方使用全局或基于常量的ir(例如在 config/main.php 中):

global $basedir=dirname(dirname((__FILE__));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-26
    • 2011-01-27
    • 2019-03-22
    • 1970-01-01
    • 2022-01-23
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多