Я пытаюсь защитить какой-то фрагмент кода моего веб-приложения.
Для этого потока я пытаюсь использовать расширение BLENC для PHP.
Причина:
Потому что клиент требует этого, поэтому, пожалуйста, не перепутайте тему.
Эта проблема:
В результате расширение BLENC отлично работает с простыми сценариями, НО … мое веб-приложение создано с использованием инфраструктуры YII, и при попытке получить доступ к веб-сайту оно возвращает следующее сообщение об ошибке …
Ошибка вывода в моем браузере:
include(Controller.php): failed to open stream: No such file or directory
/opt/lampp/htdocs/vial/yii/framework/YiiBase.php(427)
{
include($classFile);
if(YII_DEBUG && basename(realpath($classFile))!==$className.'.php')
throw new CException(Yii::t('yii','Class name "{class}" does not match class file "{file}".', array(
'{class}'=>$className,
'{file}'=>$classFile,
)));
break;
}
}
}
else
include($className.'.php'); //<-----ERROR POINTING HERE
}
else // class name with namespace in PHP 5.3
{
$namespace=str_replace('\\','.',ltrim($className,'\\'));
if(($path=self::getPathOfAlias($namespace))!==false)
include($path.'.php');
else
return false;
}
return class_exists($className,false) || interface_exists($className,false);
}
return true;
дополнительный:
Единственное, что я сделал, это активировал расширение BLENC в «php.ini» с помощью строк:
extension=blenc.so
blenc.key_file="/opt/lampp...."
Я не зашифровал ни один файл php, и я получаю это сообщение об ошибке.
Extra 2:
Когда я деактивирую расширение в «php.ini», мое веб-приложение снова работает нормально …. ТАК ….
Вопрос:
Что происходит? Я добавил расширение для PHP (которое, я знаю, работает нормально), НО я не шифрую php-файл, Попробую запустить свое веб-приложение и получаю ошибки …. Я не знаю, что происходит.
Неважно, есть ли у меня зашифрованные файлы или нет … как только я активирую расширение … мое веб-приложение перестает работать, показывая мне сообщения об ошибках Yii Framework.
Похоже, система автозагрузки Yii сломалась.
Так что, возможно, автозагрузчик не работает, потому что у Blenc есть собственный автозагрузчик, который как-то влияет на Yii.
Возможно, PATH изменяется при загрузке расширения, хотя я не уверен, как его использует Yii.
Также убедитесь, что это не проблема с Yii или расширением, а с именами файлов. Yii не будет загружать класс с именем «Controller», если имя файла «controller.php» или внутри файла определение класса имеет другой регистр, он должен соответствовать регистру. В Windows все может работать, но в Linux это всегда чувствительно к регистру.
Ссылки:
http://www.yiiframework.com/forum/index.php/topic/22756-why-does-autoload-not-work/
Зашифровать исходный код PHP в Yii
Так что, возможно, вы можете протестировать другой инструмент и посмотреть, если вы получите ту же ошибку, чтобы вы знали, должен ли это быть Yii или это из-за чего-то внутри этого расширения.
Других решений пока нет …