сократить / обфусцировать php код

<p>я использую <a href="http://haxe.org/">haxe</a> для генерации php кода. (это означает, что вы пишете свой код на языке haxe и получаете компиляцию php-файлов после компиляции.) сегодня клиент сказал мне, что ему нужна новая функция для старого проекта, созданного с помощью haxe. он также сказал мне, что он изменил некоторые мелочи в коде для своих собственных нужд. теперь я сначала перенесу его изменения в мой код haxe, а затем добавлю новую функцию, потому что в противном случае его изменения будут перезаписаны при следующей компиляции проекта.</p><p>чтобы этого не случилось, я ищу какую-то программу, которая минимизирует/запутывает код php. цель состоит в том, чтобы сделать код нечитаемым/недоступным для редактирования, насколько это возможно.<br> идеальный инструмент работал бы под linux и мог обрабатывать целые папки и все содержащиеся в них файлы.</p><p>есть какие-нибудь предложения?</p>

<p>я согласен с комментарием, что вы делаете очень скрытно, но после 10 лет в этом бизнесе я могу засвидетельствовать одну вещь: половина получаемого вами кода настолько запутана, что с таким же успехом могла быть минимизирована, и действительно имена функций/переменных так часто совершенно произвольны, я редактировал минимизированные js, и это было не намного сложнее, чем какой-то не унифицированный код.</p><p>я не смог найти ни одного такого скрипта/программы, скорее всего, потому что это отчасти противоречит духу php и немного закулисно, тем не менее.</p><p>во-первых: php не чувствителен к пробелам, поэтому первый шаг - удалить все строки и пробелы вне строки.</p><p>это усложнит работу среднего тинкера, программист среднего уровня просто найдет и заменит все; {} на $ 1n или что-то в этом роде.следующим шагом будет get_defined_functions и сохранить этот массив (ключ 'user' в возвращаемом массиве), вам нужно будет включить все файлы для этого.если это oo-код, вам также понадобятся get_defined_classes. сохраните этот массив.по сути, вам нужно получить переменные, методы и экземпляры классов, вам нужно создать экземпляр класса и get_object_vars для него, и вы можете поэкспериментировать и увидеть, что вы можете получить много другой информации, например, константы и классы vars и т.д. ,.затем вы берете эти списки, просматриваете их, создаете уникальное имя для каждой вещи, а затем preg_replace или str_replace, которое во всех файлах.убедитесь, что вы делаете это на тестовой копии, и посмотрите, какие ошибки вы получите.хотя, чтобы было ясно, в аду есть особое место, отведенное для людей, которые запутывают себя ради запутывания.проверьте: <a href="http://fr.php.net/manual/en/function.get-defined-functions.php">get_defined_functions <a href="http://fr.php.net/manual/en/function.get-declared-classes.php">get_declared_classes и просто перейдите по ссылкам, чтобы узнать, что вы можете сделать.

почему бы не использовать php buid в функции <a href="http://www.php.net/manual/en/function.php-strip-whitespace.php">php_strip_whitespace () string php_strip_whitespace ( string $filename ) </code></pre><p>возвращает исходный код php в имени файла с удаленными комментариями php и пробелами. это может быть полезно для определения количества фактического кода в ваших сценариях по сравнению с количеством комментариев. это похоже на использование php -w из командной строки.</p>

<p>мы используем <a href="http://shop.zend.com/en/software/zend-guard.html">zend guard</a> для кодирования нашего php кода с определенными клиентами, но, как сказал parrots, вы должны быть уверены <em> в вас </em> владеть кодом. мы кодируем только в определенных ситуациях, и только когда ясно, что мы сохраняем право собственности на код, в противном случае parrots прав, клиент имеет право изменять его.</p>

<p>я знаю о <a href="http://www.zend.com/en/products/guard/">zendguard</a> , expressionengine использовал его для шифрования основного кода своей пробной версии. вы всегда можете попробовать, хотя вам нужно заплатить за это.</p><p>однако, хотя я понимаю разочарование от необходимости переноса его изменений, я предполагаю, что они приобрели код у вас? они имеют право изменять его. вы просто имеете право взимать с них дополнительную плату за перенос их изменений;) представьте, что вы перестали работать на них, как они могут нанять кого-то другого для обновления кода?</p>

<p>наш <a href="http://www.semanticdesigns.com/products/obfuscators/phpobfuscator.html">php obfuscator</a> точно выполняет работу по удалению комментариев, пробелов и идентификаторов шифрования.</p><p>он работает с полным набором php файлов, чтобы гарантировать, что скремблированные символы последовательно скремблируются в этих файлах, обеспечивая правильную работу даже после скремблирования.</p><p>edit 2013: теперь шифрует строковые литералы, чтобы сделать их нечитаемыми. работает под windows, а под linux под wine.</p>

<p>вы можете попробовать <a href="http://www.raizlabs.com/software/phpobfuscator/">php obfuscator</a> или <a href="http://php.net/manual/en/book.bcompiler.php">расширение bcompiler php</a> .</p>

<p>я только что нашел minify-сервис для php. это действительно выглядит полезным. говорят, что запутывание скоро будет доступно. я надеюсь, что это правда :) <a href="http://customhost.com.ua/php-minify/">http://customhost.com.ua/php-minify/</a> </p>