【问题标题】:File_exist shows error in Ubuntu/PHPFile_exist 在 Ubuntu/PHP 中显示错误
【发布时间】:2011-09-28 22:39:25
【问题描述】:

我是 Linux/Ubuntu 的新手,所以如果我犯了任何愚蠢的错误,请原谅我。
我的代码在 XP 中运行良好,但在 Ubuntu 11.04(相同的 PHP/MySQL 版本)中无法运行

<?php
  if (!isset($_SESSION['uid'])) {
    header('Location:index.php');
    exit;
  } else {
    if (file_exists("profile_pic/".$_SESSION['uid'].".jpg")) {
      echo '<a href="'.$SitePath.'profile.php?id='.$_SESSION['uid'].'"><img src="'.$SitePath.'profile_pic/'.$_SESSION['uid'].'.jpg" alt="'.$_SESSION['name'].'" title="Me" border="0"/></a>';
    } else {
  echo '<a href="'.$SitePath.'profile.php?id='.$_SESSION['uid'].'"><img src="'.$SitePath.'profile_pic/nopic.jpg" alt="'.$_SESSION['name'].'" title="Me" border="0" /></a>';
  }  
?>

如果存在名称为$_SESSION['uid'].".jpg" 的文件,则显示它,否则显示默认图像。

我遇到的错误

可捕获的致命错误:mysqli_stmt 类的对象无法转换为字符串

【问题讨论】:

  • 为什么你认为是file_exists的问题?
  • 请添加错误消息指向的行。至少我在代码中看不到任何与 mySQLi 语句相呼应的行。
  • 相信我该文件中没有 SQL 尽管某些包含文件有
  • 这个问题存在于所有有file_exist的页面中
  • 1.尝试回显 $_SESSION['uid']; 2. 尝试回显 file_exists("/ect/hosts");

标签: php file ubuntu


【解决方案1】:

你没有显示任何数据库操作,但很可能你有类似的东西:

$_SESSION['uid'] = mysqli_query("SELECT uid FROM ...");

无论您在哪里初始化会话数据。这是不正确的。查询函数返回一个语句句柄,您可以从中获取数据。在伪代码中,它是:

$result = mysqli_query(...);
$row = $result->fetch();
$_SESSION['uid'] = $row['uid'];

【讨论】:

  • 在 file_exists 调用之前执行var_dump($_SESSION['uid'])
  • 问题不在于file_exists。问题是您错误地设置了 $_SESSION 变量,并且存储了 mysqli 语句句柄,而不是简单的字符串/数字。语句句柄对象不能转换为字符串,所以你构建的路径是无效的。
  • 虽然我没有犯与您的示例相同的错误,但问题在于设置会话。谢谢:)
【解决方案2】:

尝试打印_r($_SESSION['uid']) 这会给你一个提示它是什么,很可能正如 Marc B 所说的那样

【讨论】:

  • 是的,兄弟,你是对的,会话存在问题。但是相同的代码在 WINdows 中有效:P
猜你喜欢
  • 1970-01-01
  • 2011-06-30
  • 2011-06-28
  • 1970-01-01
  • 2012-10-29
  • 2021-07-23
  • 1970-01-01
  • 2016-08-09
  • 2012-11-10
相关资源
最近更新 更多