2016-12-28 2 views
0

Я используюInclude не работает на сервере

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

spl_autoload_register("load"); 

Это правильно работает на локальном хосте. Но после его загрузки на сервер он не работает. Как это исправить?

+0

waht для стояния «java» в теме? – 2oppin

+0

, потому что этот скрипт связан с приложением Java – user3143519

+0

, как это работает в java-приложении? если вы считаете, что это играет роль (имхо это не так), то прошлая часть кода, который извлекает данные из php-приложения, но на самом деле 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 », в то время как в системах ** nix с EXT * файловыми системами будут играть роль варианты вариантов имени файла.