1. Куча / Говнокод #26350

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    Сообщаю, что я пытался воскресить эту ебучую хуету на php4. Сначала пытался
    воспользоваться docker'ом, чтобы заполучить нужные дистрибутивы мускуля и
    пыхи, в связи с чем огрёб следующие траблы:
    1) все готовые докерфайлы для четвёртой пыхи как минимум трёхлетней давности,
        поэтому в них:
          а. попадаются уже мёртвые GPG ключи
          б. попадаются уже мёртвые ссылки на различные файлопомойки, откуда предпо-
              лагалось тащить исходники или пакеты для всякого старья
        через эти пункты мне удалось прорваться, и сделать живой контейнер с пыхой, но тут
    2) оказалось, что проект представляет из себя настолько бессистемную кучу пыхофайлов,
        непредсказуемо поименованных и состоящих из смеси вёрстки, кода и запросов к базе,
        что мне понадобился отладчик xdebug либо zend debugger, в связи с чем я с радостью
        узнал, что
           а. xdebug вообще не сущетсвует для линукса на php4.4, если только не попытаться со-
               брать его из сырцов для винды
           б. zend debugger такой старый просто само по себе очень сложно найтй, и в докер его
               по всей видимости никто никогда не пихал, и я не буду :)
    В связи со всем вышеперечисленным, сейчас я скачиваю образ свинёрки, чтобы гонять
    её в виртуалке, потому что промелькнула надежда на denver, который вроде как из ко-
    робки предлагает такое говно мамонта.
    Держите за меня кулачки.

    Запостил: vistefan, 14 Января 2020

    Комментарии (42) RSS

    • https://youtu.be/pcr8kBeA_kE
      Ответить
    • А вообще, в "PHP" 4.4 в качестве отладчика было принято использовать "print_r".
      Ответить
    • Какой багор )))
      Ответить
    • Это ты вроде для друга делаешь?
      С такими друзьями и врагов не надо.
      Ответить
    • Кококококой багор )))

      Уже лет 10 как софт для PHP 5.2 нужно разыскивать с собаками. Несколько лет пытаются убить PHP 5.3-5.6. А тут живой проект на PHP 4 в 2020-м году.

      Серьёзно?
      Ответить
      • Обычно говносайт за 13 лет либо 10 раз редизайнится и переписывается на чём-то адекватном настоящему времени, либо дохнет и выкидывается нахуй. Но чтобы протащить через десятилетия четвёртое пыхоговно, требуются особые мужество и отвага. Хочу посмотреть на это чудо.
        Ответить
        • Возможно, с четвёртого пыхоговна его будет проще вообще на какой-нибудь другой язык перевести. Или подобрать готовый движок и дописать его под задачу. Но это возможно, если проект хорошо документирован.
          Ответить
          • Разве пыха 4 несовместима с 5-7?
            Ответить
            • Зеев и Сураски пытались, но получилось как обычно. Нюансов много.
              Ответить
              • Пытались оставить совместимость, или пытались от неё избавиться?
                Ответить
            • Нашёл список несовместимостей говна мамонта с засохшей какахой:
              https://www.php.net/manual/ru/migration5.incompatible.php

              ЗЫЮ Вопрос знатокам, что это значит:
              Передача массива в функцию по значению больше не сбрасывает внутренний указатель массива, используемый для доступа к его элементам в данной функции. Иными словами, в PHP 4 при передаче массива в функцию его внутренний указатель сбрасывался внутри функции, тогда как в PHP 5 при передаче массива в функцию данный указатель останется в том же положении, в котором он был до передачи массива в функцию.
              ?
              Ответить
              • Внутренний указатель используется функциями reset, end, current, next, prev, each. Их использовали для итерации по массиву. С каждым массивом связывался некий «курсор», который двигали функции each, next и prev.

                Сейчас практически не используются, вместо них используют foreach.

                Каюсь, я пользовался функциями reset и end для получения соответственно первого и последнего элемента массива. В семёрке вместо них можно использовать array_key_first и array_key_last.
                Ответить
              • Кстати, поскольку внутренний указатель у каждого массива существует в единственном экземпляре, им невозможно пользоваться, когда в цикле массив упоминается более одного раза. Например, при сортировке приходится сравнивать $a[$i] с $a[$j], а current($a) может быть только один.

                Возможно, этот внутренний указатель ввели, когда ещё не было цикла foreach, чтобы была возможность итерации по нечисловым ключам, а потом оставили для совместимости.
                Ответить
            • ты дурак? в пыхе даже минорные изменения версий могут сломать backward compatibility, код для 5 не работает для 7, и вполне реально наткнуться на код, скажем, для 4.4, который не работает на 4.5.
              Ответить
              • Но не трудно фиксится, хотя могло много накопиться. Но я бы не стал обновляться, огребешь при обновлении на проде.
                Ответить
          • Учитывая, КАК писали на "РНР" 4, тут проще заново актуализировать требования и ебануть всё с нуля. Но если это кому-то нужно. Если там задача номер телефона в футере поменять, то ебись оно всё конём.
            Ответить
            • > проще
              C какого это хуя проще, если мне нужны косметические изменения, затем в поддержку я сайт брать не буду, либо уже за отдельный бюджет, а для этого надо сначала показать хоть что-то.

              > Если там задача номер телефона в футере поменять
              Ну да, примерно так и есть.
              Ответить
        • Показать не могу, но тут ничего необычного — это интернет-магазин специфических автозапчастей, который набивается и управляется через самописную админку, платежных систем нет, просто приходит email с выбранными товарами, но мигрировать это всё ради косметических изменений во внешнем виде сайта смысла никакого, вот так он и прожил до наших дней.
          Ответить
    • Изучай:

      https://museum.php.net/

      https://pecl.php.net/
      https://pear.php.net/

      «xdebug» можно собрать из исходников. Брать тут:
      http://web.archive.org/web/20111221231752/xdebug.org/files/

      *****

      «Денвер» нахуй. Если нужно протестировать на «Windows», то лучше брать тут:
      https://windows.php.net/downloads/

      В качестве сервера под «Windows» можно брать «Апач» или «lighttpd». Для последнего есть неофициальный пакет, чтобы запускать его как службу.

      В случае «Апача» интерпретатор «PHP» вызывается из mod_php, в случае «lighttpd» нужно запускать «PHP» как fastcgi-сервер.

      «Mysql» или «MariaDB» в «Windows» ставится вообще просто.

      Если тяжело ставить всё с нуля, можно установить XAMPP (в нём будет новый интерпретатор «PHP») и прикрутить к нему «PHP4».
      Ответить
      • Кстати, Винда — вообще отдельная тема.

        Во-первых, там есть два варианта интерпретатора: «thread safe» и «non thread safe». Если интерпретатор TS, то все расширения должны быть TS. Если интерпретатор NTS, то все расширения должны быть NTS. Если хотя бы одно расширение оказалось не того варианта, то интерпретатор при старте упадёт.

        Во-вторых, каждая версия PHP должна компилироваться определённой версией MSVC. Для PHP 5.2 нужно MSVC6 (VS 98), для PHP 5.3 и 5.4 — MSVC9 (VS 2008), для PHP 5.5 и 5.6 — MSVC11 (VS 2012). Какая версия нужна для 4.4, я не знаю. Возможно, VS 98, но точно не новее. У разных версий MSVC может быть разный манглинг имён и разная версия CRT (используется динамическая библиотека, а не статическая), поэтому расширение должно быть скомпилировано той же версией, что и интерпретатор.
        Ответить
        • > thread safe
          Но в "PHP" же нет потоков.
          Ответить
          • Потоков на уровне языка нет, а thread-safe есть:
            https://www.php.net/manual/ru/faq.obtaining.php#faq.obtaining.threadsa fety
            https://ru.stackoverflow.com/questions/814897/
            https://qna.habr.com/q/410970

            Потокобезопасная версия требуется только при работе с mod_php «Апача», потому что он создаёт треды.

            FastCGI же создаёт процессы, а не треды. С ним можно использовать и «небезопасную» версию.
            Ответить
        • А NTS интерпретатор с TS расширениями почему падает? В TS поди какой-нибудь аргумент с контекстом добавили во все функции?
          Ответить
      • > https://museum.php.net/
        > https://pecl.php.net/
        > https://pear.php.net/

        Именно оттуда докерфайлы и пытаются тащить исходники и компилировать их, но что толку, пыха-то нужная у меня уже есть, просто к ней в природе не существует норм дебаг-инструментов.

        > «Денвер» нахуй.
        > В качестве сервера под «Windows» можно брать «Апач»

        Ну так блять а в денвере по-твоему что используется?
        Ответить
        • PECL сейчас работает с перебоями, то и дело падает. Несколько раз нажав F5, можно открыть страницу:
          https://pecl.php.net/package/xdebug

          Там те же версии xdebug, что и на http://web.archive.org/web/20111221231752/xdebug.org/files/

          1.x точно на PHP 4.x пойдут, плюс какие-то из 2.x могут пойти (не выше 2.2).

          Да, для Линукса только в исходниках. Понадобится пакет php-dev именно от той же версии PHP, чтобы gcc увидел заголовочные сишные файлы и чтобы запустить скрипт phpize.
          Ответить
          • Вот за такую глубину познаний говна — респект.

            > Понадобится пакет php-dev именно от той же версии PHP
            Не понадобится, я тебя может быть огорчу, но из пакетных менеджеров никто в здравом уме пыху не ставит, во всех более-менее рабочих докерфайлах с докерхаба ты увидишь выкачивание тарника с исходниками и его компиляцию. Из пакетного менеджера ставят как раз депенденси либы и собственно gcc ))) Так что исходники с вероятностью 99% у тебя всегда от пыхи именно той версии есть, потому что именно из них ты и пытаешься собраться.
            Ответить
    • Нафиг ты за это взялся?
      Ответить
      • легоси какое то небось

        только нархена етиться например с мусакуелем, который можно развернуть без хуйни
        Ответить
      • Задача как задача, опыт получаю, на результат более-менее похуй. А нафиг ты клавиатуру для ОСУ делал?
        Ответить
        • Ну он же не на "РНР" её делал.
          Ответить
        • > опыт

          Опыт работы с окаменелым говном из двухтысячных?

          З.Ы. Ну смотря как оплачивается, конечно.
          Ответить
          • > с окаменелым говном из двухтысячных

            Не только, ещё в сборке всякого говна вручную и в работе с ещё не окаменелым говном из 2020, таким как докер или специфические фичи для всего этого в idea
            Ответить
          • > З.Ы. Ну смотря как оплачивается, конечно.

            Никак, за еду лол
            Ответить

    Добавить комментарий