【问题标题】:Include not working on server包括不在服务器上工作
【发布时间】:2017-05-12 11:47:17
【问题描述】:

我正在使用

function load($c) {
    if (strpos($c, "Cyclos\\") >= 0) {
        include str_replace("\\", "/", $c) . ".php";
    }
}

spl_autoload_register("load");

它在本地主机上正常工作。但是上传到服务器后就不行了。我该如何解决?

【问题讨论】:

  • 主题中的“java”是什么意思?
  • 因为这个脚本是和一个java app相关的
  • java app是怎么搞这个的?如果您认为它起作用(恕我直言,它不是),那么过去从 php-app 获取数据的代码部分,但实际上主题中的 java+str_replace 没有任何意义。顺便说一句,我已经发布了答案(更新了一点),它没有帮助吗?
  • 我更新了标题,因为这个问题与include 语句有关。它可能需要服务器上的不同路径,因为物理目录与 URL 路径不同。

标签: php string replace


【解决方案1】:

这里有两个错误:

  1. strpos() 是一个区分大小写的函数,您应该改用stripos()str_replace() 也是如此,您应该使用 str_ireplace()。但是由于您只是替换代码中的反斜杠,因此在这种情况下没有任何区别。

  2. strpos()stripos()如果没有找到则返回false(int) false == 0,所以如果出现则通过。

试试这个:

function load($c) {
    if (stripos($c, "Cyclos\\") !== false) {
        include str_replace("\\", "/", $c) . ".php";
    }
}

spl_autoload_register("load");

但是,在不同的文件系统上,原因可能不同,在 localhost 上,您可能有一个不区分大小写的文件系统(例如 NTFS),并且“cyclos.php”与“Cyclos.php”相同,而在 **文件名中具有 EXT* 文件系统大小写变化的 nix 系统将发挥作用。

【讨论】:

    猜你喜欢
    • 2018-01-07
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多