2016-12-28 115 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系統中,文件名的大小寫變化將起作用。