Удаление лишних символов в сгенерированных изображениях

November 24, 2008 | By admin | Filed in: CakePHP, PHP.

Пару раз с PHP возникала следующая проблема: изображения, сгенерированные при помощи GD (ImageMagick) в браузере не отображались, причиной чего являлись лишние символы в полученной картинке (например, перевод строки – 0x0A). Такое бывает, если в исходнике перед есть лишние символы (еще это бывает, если редактор кода не совсем корректно работает с UTF-8). Таким образом, все лишнее нужно убрать.
В CakePHP не очень просто понять, в каком из файлов содержится ошибка, т.к. контроллер (который обычно и генерирует изображение) – далеко не единственный файл, исполняемый PHP для этого. Помочь может функция get_included_files() с говорящим названием. Вот пример ее исполнения:

app\controllers\users_controller.php (line 13)

Array
(
[0] => Y:\home\my_project\www\index.php
[1] => Y:\home\cakes\latest\cake\bootstrap.php
[2] => Y:\home\cakes\latest\cake\basics.php
[3] => Y:\home\cakes\latest\cake\config\paths.php
[4] => Y:\home\cakes\latest\cake\libs\object.php
[5] => Y:\home\cakes\latest\cake\libs\inflector.php
[6] => Y:\home\cakes\latest\cake\libs\set.php
[7] => Y:\home\cakes\latest\cake\libs\configure.php
[8] => Y:\home\cakes\latest\cake\libs\file.php
[9] => Y:\home\cakes\latest\cake\libs\folder.php
[10] => Y:\home\cakes\latest\cake\libs\cache.php
[11] => Y:\home\my_project\cake_files\app\config\core.php
[12] => Y:\home\cakes\latest\cake\libs\debugger.php
[13] => Y:\home\cakes\latest\cake\libs\cake_log.php
[14] => Y:\home\cakes\latest\cake\libs\cache\file.php
[15] => Y:\home\my_project\cake_files\app\config\bootstrap.php
[16] => Y:\home\cakes\latest\cake\libs\string.php
[17] => Y:\home\cakes\latest\cake\libs\session.php
[18] => Y:\home\cakes\latest\cake\libs\security.php
[19] => Y:\home\cakes\latest\cake\dispatcher.php
[20] => Y:\home\cakes\latest\cake\libs\router.php
[21] => Y:\home\cakes\latest\cake\libs\controller\controller.php
[22] => Y:\home\cakes\latest\cake\libs\controller\component.php
[23] => Y:\home\cakes\latest\cake\libs\view\view.php
[24] => Y:\home\cakes\latest\cake\libs\view\helper.php
[25] => Y:\home\cakes\latest\cake\libs\overloadable.php
[26] => Y:\home\cakes\latest\cake\libs\overloadable_php5.php
[27] => Y:\home\cakes\latest\cake\libs\class_registry.php
[28] => Y:\home\my_project\cake_files\app\config\routes.php
[29] => Y:\home\my_project\cake_files\app\config\inflections.php
[30] => Y:\home\my_project\cake_files\app\app_controller.php
[31] => Y:\home\my_project\cake_files\app\controllers\users_controller.php
[32] => Y:\home\cakes\latest\cake\libs\controller\components\session.php
[33] => Y:\home\my_project\cake_files\app\controllers\components\helper_functions.php
[34] => Y:\home\my_project\cake_files\app\controllers\components\sd_auth.php
[35] => Y:\home\cakes\latest\cake\libs\controller\components\request_handler.php
)

Список файлов довольно большой, но файлы ядра CakePHP вряд ли содержат лишние символы. Поэтому достаточно проверить лишь те файлы, которые были созданы вами, и убрать из них все ненужное.


Leave a Reply