2016-12-28 50 views
0

工作我使用包括不在服务器上

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

spl_autoload_register("load"); 

它在本地主机上正常工作。但是在上传到服务器之后,它无法正常工作。我如何解决它?

+0

为什么要站在“java”的主题? – 2oppin

+0

,因为这个脚本与一个java应用程序相关 – user3143519

+0

java应用程序如何从事这项工作?如果你认为它起到了作用(不是),那么过去从php-app获取数据的代码的一部分,但在主题中真正的java + str_replace没有意义。顺便说一句,我已经张贴临答案(更新了一下),这是否有帮助? – 2oppin

回答

0

您这里有两个误区:

  1. strpos()是区分大小写的功能,你应该使用stripos()代替。 str_replace()也是如此,你应该使用str_ireplace()。但是因为你只是代替了代码中的反斜杠,所以在这种情况下并没有什么不同。

  2. strpos()stripos()false如果没有出现被发现,并(int) false == 0,所以如果在occurency如果将它传递。

试试这个:

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

spl_autoload_register("load"); 

然而,其原因可能是在不同的文件系统不同,在本地主机上你可能有一个不区分大小写的文件系统(NTFS为例),和“cyclos.php “与”Cyclos.php“相同,而在具有EXT *文件系统的** nix系统中,文件名的大小写变化将起作用。