Почему при загрузке скриптом не загружаются (бьются) бинарные файлы (картинки, архивы)?
На нашем сервере используется русский Apache, который по умолчанию перекодирует все принимаемые данные из множества русских кодировок, используемых у клиента, в одну стандартную, в которой они хранятся на сервере. На нашем сервере это windows-1251. Бинарные данные не должны подвергаться перекодированию, соответственно, эту функцию следует отключить. Для этого нужно в каталоге, где лежит загружающий скрипт, создать файл .htaccess и поместить в него директиву, отключающую перекодировку.
CharsetRecodeMultipartForms off
Эта директива отключает перекодировку данных, отправляемых из html-формы в формате multipart/form-data (который и применяется для загрузки файлов на сервер с помощью html-формы). Учитывайте, что если в форме, данные из которой принимает скрипт с отключенной перекодировкой, есть текстовые поля, то перекодировать их вам придется самостоятельно.
Почему скрипт на Perl локально работает, а на сервере - нет?
Чаще всего проблема возникает из-за наличия в коде "виндового" перевода строки. Windows использует для разделения строк два символа - x0D и x0A, а UNIX только один - x0A. Наличие в коде "виндового" x0D вызывает ошибку. Для избавления от "виндового" символа есть два пути:
Изначально писать скрипт в текстовом редакторе, позволяющем сохранять код в unix-формате (Блокнот к таким не относится).
При загрузке скрипта по FTP включать режит ASCII. Тогда файл будет передан на сервер в правильном unix-формате.
Далее следует проверить правильность написания путей. Пути в UNIX имеют вид /home/user/dir/file. Обратите внимание, в отличие от Windows, слеши в UNIX прямые (/), а не обратные (), регистр различается (file и File это разные файлы). Наконец, скрипты на Perl должны иметь правильные атрибуты (права доступа) - 755 (rwxr--r--).
Можно ли размещать на ваших серверах материалы порнографического содержания?
Вы должны понимать, что строгого определения порнографии не существует в природе. Содержание материалов, размещаемых на наших серверах, регламентируется текущим законодательством Российской Федерации. Материалы, которые могут быть классифицированы как выходящие за рамки закона, размещать на наших серверах нельзя. Размещение эротики, body-art'а, художественных произведений, содержащих обнаженную натуру, - допустимо.
Можно ли на ваших серверах организовывать e-mail рассылки?
Да, если все в порядке, и пользователи сами подписываются на рассылку, то можно. Рассылка спама категорически запрещается. В случае поступления жалоб на спам, аккаунт, производящий рассылку спама, будет закрыт.
Можно ли запустить на хостинге свой демон?
Нет. На виртуальном хостинге выполнение любого пользовательского процесса ограничено лимитом в 10 секунд процессорного времени. Если для функционирования Вашего ресурса требуется запуск процесса, не ограниченного по времени, выходом может быть переход на услугу collocation или тарифный план Vega. На выделенном сервере Вы сможете запустить все, что угодно, без каких-либо ограничений.
Почему скрипт не запускается через Cron?
Чаще всего проблема возникает из-за наличия в списке заданий "виндового" перевода строки. Windows использует для разделения строк два символа - x0D и x0A, а UNIX только один - x0A. Наличие в коде "виндового" x0D вызывает ошибку. Для избавления от "виндового" символа есть два пути:
Изначально писать файл для cron'а в текстовом редакторе, позволяющем сохранять код в unix-формате (Блокнот к таким не относится).
При загрузке скрипта по FTP включать режит ASCII. Тогда файл будет передан на сервер в правильном unix-формате.
Далее следует проверить правильность написания путей. Пути в UNIX имеют вид /home/user/dir/file. Обратите внимание, в отличие от Windows, слеши в UNIX прямые (/), я не обратные (), регистр различается (file и File это разные файлы). Кроме того, если запускаемый скрипт написан на PHP, перед путем к скрипту необходимо вставить вызов интерпретатора PHP:
0 * * * * php /home/user/dir/script.php
Как создать уменьшенную копию картинки?
Вариант на PHP
<?php
# Чтение исходной картинки
$src=imagecreatefromjpeg("/путь/к/файлу/original.jpg");
# Создание уменьшенной картинки (x - ширина, y - высота)
$dst=imagecreatetruecolor(x,y);
# Копирование картинки из оригинальной в уменьшенную (imagecopyresampled - качественнее, imagecopyresized - быстрее)
imagecopyresized($dst, $src, 0, 0, 0, 0, ImageSX($dst), ImageSY($dst), ImageSX($src), ImageSY($src));
# Запись уменьшенной картинки в файл (q - качество, от худшего 0 до лучшего 100)
imagejpeg($dst,"/путь/к/файлу/small.jpg",q);
?>
Вариант на Perl
#!/usr/bin/perl
use GD;
# Чтение исходной картинки (1 - полноцветный режим)
$src = newFromJpeg GD::Image("/путь/к/файлу/original.jpg",1);
# Создание уменьшенной картинки (x - ширина, y - высота, 1 - полноцветный режим)
$dst = new GD::Image(x,y,1);
# Копирование картинки из оригинальной в уменьшенную (copyResampled - качественнее, copyResized - быстрее)
$dst->copyResampled($src,0,0,0,0,$dst->getBounds(),$src->getBounds());
# Запись уменьшенной картинки в файл (q - качество, от худшего 0 до лучшего 100)
open (DST,'>/путь/к/файлу/thumbnail.jpg');
binmode DST;
print DST $dst->jpeg(q);
close DST;