Ответы пользователя по тегу PHP
  • MySQL+PHP и компилируемый язык?

    kotomyava
    @kotomyava
    Системный администратор
    В вашей постановке задачи, проще всего сделать приложение с веб интерфейсом, можно и на том же php/java/python/что угодно. От того, компилируемый язык или нет используется, и какой, не зависит отказоустойчивость. Только от того как система спроектирована, и как продублированы точки отказа.

    Если правильно спроектировать веб интерфейс, то с ним будет удобно работать, и работать это будет как на десктопе, так и на мобильных устройствах, и не понадобится никаких дополнительных приложений.
    Ответ написан
    Комментировать
  • Не запускается php сайт на виртуальной машине в UBUNTU 18.04, что делать?

    kotomyava
    @kotomyava
    Системный администратор
    Не совсем похоже на то, что вообще не работает обработчик php... phpinfo() отдаёт ведь?

    Может быть дело в short_open_tag, которые надо включить для вашего скрипта, и которые по умолчанию выключены?
    Ответ написан
  • Почему на локальном сервере flush работает, а когда заливаю на хостинг, то нет? Что мне нужно поменять на хостинге, чтобы flush работал?

    kotomyava
    @kotomyava
    Системный администратор
    Не делайте так, и не надейтесь, что где-то вообще такой подход будет работать.
    Даже если вы заставите сервер так отдавать построчно, любой прокси между клиентом и сервером сломает это постепенное обновление, и будет дожидаться полного ответа сервера, и только потом отдаст его клиенту.

    Чтобы получать периодические обновления используйте ajax и таймер на клиенте, или websocket, но это в данном случае сложнее, да и не нужно.
    Ответ написан
    4 комментария
  • Как правильно запустить внешний скрипт в фоновом режиме?

    kotomyava
    @kotomyava
    Системный администратор
    Всё работает так, как должно быть, вы что-то странное ожидаете просто.

    Вызов exec блокируется до окончания выполнения.
    Цепочка вызовов через && выполняется последовательно.

    Для порождения отдельных дочерних процессов, можно использовать pcntl_fork и.т.п.
    Ответ написан
  • Как правильно передать http заголовок в php curl?

    kotomyava
    @kotomyava
    Системный администратор
    У вас в случае консоли заголовок:
    Bearer: a469d2ad60b77a7aa2a5b75f911b09b8f3f27ab637363830


    В случае программы почему-то:
    Authorization: Bearer a469d2ad60b77a7aa2a5b75f911b09b8f3f27ab637363830


    Это, как бы, разные заголовки. =)
    Ответ написан
  • Нехватка памяти для обработки PHP?

    kotomyava
    @kotomyava
    Системный администратор
    В скобках то, что запрошено, а не лимит. =)
    Парсер, вероятно кривущий, если на входе не сотни мегабайт данных. =-) Ну а если сотни, то да, реально нужно бывает в несколько раз больше памяти чем есть входных данных, или надо работать не со всеми данными, и оптимизировать алгоритм по памяти.
    Ответ написан
    Комментировать
  • Как подключить и использовать mozjpeg в php?

    kotomyava
    @kotomyava
    Системный администратор
    Только вызовом бинарника, её использующего(т.е. не аналогично команде cjpeg, а запустив эту команду через какой-нибудь shell_exec). Расширения php для работы с mozjpeg нет. Заменой libjepeg она тоже не является, так что собрать с ней как вы предполагаете не получится.
    Ответ написан
  • Как в JS вставить разметку HTML с содержимым PHP?

    kotomyava
    @kotomyava
    Системный администратор
    Ваш html, это php файл, который обрабатывается на сервере, или это просто html файл, который вы открываете в браузере?

    Если первое, то у вас где-то раньше должны эти переменные получать значения какие-то каким-то образом.

    Если второе, вы просто не понимаете, как это работает.
    На сервере php файл обрабатывается интерпретатором php, и код заменяется на результат его выполнения, а всё остальное добавляется как есть, и результат отдаётся пользователю. Т.е. никакого <?php ?>, уже нет в результатах, и php не обрабатывается браузером, есть то, что вернул код, чаще всего какой-то текст, и только.
    Ответ написан
    Комментировать
  • Как узнать сколько было извлечено записей из базы данных.?

    kotomyava
    @kotomyava
    Системный администратор
    php.net/manual/ru/pdostatement.rowcount.php
    Только внимательно прочесть всё что там написано о select запросах.

    Ну и вообще, стоит перед тем, как задать вопрос, всё же посмотреть в документации - на такие, по крайней мере вопросы, она отвечает вполне хорошо.
    Ответ написан
  • Как запустить bash скрипт из php?

    kotomyava
    @kotomyava
    Системный администратор
    Либо вы разрешаете как-то выполнение программ, и можете сделать это и вы и потенциальный взломщик, либо нет - чудес тут не бывает.

    По изоляции - вам надо менять конфиг веб сервера, и имя скрипта передавать относительно вашего chroot. А передаётся оно, вероятно, относительно корня сейчас. Ну и окружение слишком уж минимальное. =)

    P.S. Вам правильно писали, что очереди это тоже вполне инструмент изоляции.
    Ответ написан
  • Так ли необходимо использовать плэйсхолдеры для избежания инъекций, или написанная собственноручно проверка входных данных будет более чем достаточна?

    kotomyava
    @kotomyava
    Системный администратор
    Если вы имеете в виду prepared statments в PDO, то нет смысла их не использовать. А как вы будете дополнительно проверять свои входные данные (а это, в общем-то, делать всё равно надо), уже не так важно.
    Ответ написан
    Комментировать
  • В заголовке письма иероглифы, что делать?

    kotomyava
    @kotomyava
    Системный администратор
    Content-Type: text/plain; charset=Windows-1251. А всё небось в utf-8. =)

    P.S. Дополнительные заголовки, кстати, надо передавать четвёртым параметром mail(), а не пихать в тело письма.

    P.P.S. И конечно, такого файла с такой логикой работы не должно быть, если это не просто пример. Т.е. вам как-либо надо проверять, а имеет-ли право тот, кто делает http запрос к этому файлу отправлять сообщение.
    Ответ написан
    Комментировать
  • Почему не работает mailer.php?

    kotomyava
    @kotomyava
    Системный администратор
    У вас закончена регистрация ящика, или он только создан?
    После создания в него надо минимум один раз войти через интерфейс mail.ru. До этого работать smtp не будет.

    У многих других почтовых сервисов, кстати, аналогично всё.
    Ответ написан
    2 комментария
  • Как включить mbstring через htaccess в php7?

    kotomyava
    @kotomyava
    Системный администратор
    mbstring.func_overload относится к классу PHP_INI_SYSTEM, и может быть установлена в php.ini(или различных дополнительных ini файлах), или в конфиге apache, через php_admin_value, при использовании mod_php. Но не в .htaccess.
    Ответ написан
  • Как безопасно развернуть php приложение?

    kotomyava
    @kotomyava
    Системный администратор
    Как 100% защититься от этого?

    Никак. Не бывает 100% защиты.


    Какие права нужны?
    Какие права нужны?
    В какую директорию желательно запихивать скрипты?
    От какого юзера запускать nginx / php-fpm ?

    Не существует рецепта на все случаи жизни, тем более, который можно было бы изложить, не в виде большой книги, а ответе на вопрос. И всё куда сложнее, чем вы вероятно, думаете.

    Но есть несколько советов:
    Нужен квалифицированный администратор, который настроит и будет сопровождать сервер.
    Крайне желателен анализ приложения специалистом по безопасности.
    Есть WAF, которые могут решить часть проблем приложения, даже если о них не известно, и в простейшем случае, можно воспользоваться, например Cloudflare, т.к. поднимать такое ПО локально, часто накладно по ресурсам.

    Ну а также, там, куда можно заливать файлы, должно быть запрещено выполнения кода, на уровне конфигурации веб сервера. Т.е. надо писать нормальные конфиги. В вашем случае, вообще-то всё довольно просто - у вас же только одна точка входа - index.php в webroot, вот только он и должен выполняться через php-fpm, а не все php файлы. Ну а места, куда заливать нельзя, и это не какой-то файловый кеш, должны быть защищены на уровне прав от возможности создания файлов пользователем, от которого запущен обработчик php. Т.е. должно соблюдаться правило, если что-то не является необходимым, оно запрещено.

    Также - никакого лишнего софта на сервере. Никаких phpmyadmin, дырявых панелей, ftp. Всё снаружи закрыто фаерволом. Но это всё ваш админ должен сам знать, собственно, а раз вы задаёте этот вопрос, то он вам ох как нужен.
    Ответ написан
    Комментировать
  • Как изменить заголовки mail() php?

    kotomyava
    @kotomyava
    Системный администратор
    Этот заголовок добавляется не на вашей стороне, а промежуточными серверами, и принимающим сервером. Заголовков может быть более одного если есть релеи, по этим заголовкам можно восстановить путь письма.
    На своей стороне вы убрать его не можете.
    Ответ написан
    Комментировать
  • Как исправить PHP Fatal error: Out of memory?

    kotomyava
    @kotomyava
    Системный администратор
    Это не проблема лимита памяти одного процесса, который задаётся memory_limit, a проблема нехватки памяти в общем. Надо уменьшать количество одновременно запускаемых обработчиков php, чтобы они суммарно не кушали больше памяти, чем есть на сервере. Не забывая о том, что есть и другие потребители памяти, например mysql. Возможно, надо настроить и его. Возможно, и что-то ещё...
    Ответ написан
    Комментировать
  • Запуск cron'a с условиями?

    kotomyava
    @kotomyava
    Системный администратор
    У вас не корректное сравнение. Дата должна не равняться вашему $three_days, а быть между ним и 23:59 того же дня.

    Также, лучше работать с DateTime, где есть DateTime::diff, DateTime::add и.т.п., это намного удобнне, нагляднее и лаконичнее, чем всякие mktime|date и.т.п.
    Ответ написан
    1 комментарий
  • Из-за чего появляется child died with signal 7?

    kotomyava
    @kotomyava
    Системный администратор
    Ошибка 324 это пустой ответ от сервера, вероятно? Да, тогда связано.

    Signal 7 это SIGBUS, чаще всего это проблемы с доступом к памяти. Может вызываться и проблемами железа, и ошибками в софте. Ну и не важно сколько той памяти - это не проблема с её объёмом - это проблема что что-то не по тем адресам обращается.

    Чтобы побороться, стоит попробовать обновить серверное ПО для начала.
    Если проблема не уйдёт, попробовать отключить opcache, и если поможет поиграться с его настройками.
    Если проблема не решится, локализовать при каких запросах она возникает и посмотреть, какие расширения или внешние программы вызываются (обычно именно в таких сценариях вылезает такое). Также, можно установить ПО с отладочными символами, включить снятие дампов и проанализировать их, чтобы получить дополнительную информацию.
    Ответ написан
    1 комментарий
  • Повысить максимальную память для composer?

    kotomyava
    @kotomyava
    Системный администратор
    У вас проблема не в лимитах, а в нехватке памяти как таковой. Обойти проблему можно подключив swap, например, в виде файла.
    Ответ написан