Я просто в шоке от PHP! Вообще то я никогда этот язык не использовал и, судя по всему, теперь никогда использовать не буду :)
Настраиваю DSPAM. В дополнительном пакете поставляется удобная утилитка, которая обучает спам фильтр. Что самое прикольное - этот скрипт написан на PHP и запускается как обыкновенная программа в командной строке.
Задача утилиты прочитать с почтового ящика imap сервера письма из папок spam и ham, и соответственно научить антиспам фильтр. К ящикам она обращается напрямую, как к файлам файловой системы. А вот для удаления писем из ящика вызывает функции PHP для работы с imap.
Сначала, естественно открывает ящик:
$stream=@imap_open($imapmailbox,$imapuser,$imappasswd);
И вот тут то у меня случился страшный затык. Программа антиспам фильтр обучает, а вот письма тз папок не удаляет. При вызове этой функции просто завершает работу с котдом возврата 255. Плин! Бился над этой проблемой два дня. Как оказалось, я просто забыл поставить пакт php-imap.
Чудо язык PHP! Чудо! Нормальный язык, тот же Perl страшно бы ругнулся и послал меня за функцией, а это Чудо, тупо, молча, без предупреждений завершал работу.
Нда. Большое спасибо автору скрипта, который использовал PHP для скрипта! Зачем он использовал не предназначенный для этого язык я не понимаю.
И большое спасибо авторам PHP, за чудо язык, который так забавно себя ведет :)
Добрый День!
ОтветитьУдалитьТут наверное, вопрос к автору, зачем он консольный скрипт на php написал ))
Из командной строки я ни разу скрипты php не запускал, а вот если бы Вы использовали несуществующую функцию в каком-нибудь web сценарии, сразу бы свалилось в лог веб сервера, или, если у Вас в php.ini включено отображать ошибки, то прямо бы и вывелось на странице fatal error)
При написание web-сценариев, мне какжется php гораздно удобнее, чем perl/
Именно!!! Зачем автор PHP для этого использовал, я так и не понял.
ОтветитьУдалитьПришлось тупо во все строки echo(""); писать, что бы разобраться где проблема :(
Первая мысль была, что пакет неправильно установлен и побит какой то из файлов. Решил переустановить и вот тут то и обнаружил, что его просто нет.
В php @ ставится для подавления ошибок, и естественно у тебя ничего не выдало про неустановленный модуль.
ОтветитьУдалитьПервое, что я сделал - убрал @ и тут же получил сообщение о синтаксической ошибке - не такой функции. Не то, что нет модуля, просто синтаксис типа не правильный :(
ОтветитьУдалитьЭто теперь я понимаю, что это означает и как это надо интерпретировать :) А тогда...
bigkaa, согласись, что если у тебя нет опыта работы в php не делает его ужасным языком. Я не защищаю php, мне просто кажется, что вывод который ты сделал из этого случая не логичен.
ОтветитьУдалитьДык я и не скрываю, что я не знаю PHP. Но по моему мнению, столь очевидные вещи язык должен предусматривать, особенно, если он позволяет писать не только WEB, но и скрипты.
ОтветитьУдалитьСогласитесь, что это существенная недоработка.
У каждого инструмента - свои особенности. Например, то, что я не смог настроить VPN в KUbuntu не говорит, что Linux дерьмо.
ОтветитьУдалитьОк! Мне ЭТА ОСОБЕННОСТЬ PHP очень не понравилась! Поэтому я им пользоваться не буду. Есть очень позитивные Питон и Перл.
ОтветитьУдалить