Задать вопрос
Ответы пользователя по тегу PHP
  • Почему не удаётся запустить imagick на php 8.2, 8.3?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    через power shell командой php -i проверял, всегда показывало, что imagick есть и версия та, которую ставил.
    Это говорит о том, что меняли вы не тот php.ini, так как для командной строки и для модуля апача/демона для нжинкса php.ini лежит в другом месте. Тут надо запускать через веб сервер пхп файлик с phpinfo();

    а также отсутствует инфа в php info.
    Значит просто не туда смотрели. Ищите на страничке ini, смотрите где физически лежит ини файл для веба и меняйте настройки в нем.
    Ответ написан
  • Почему форма обратной связи php отправляет часть кода?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) Тело хтмл письма, как и любой подвид иксмл, должно начинаться с оперделяющих тегов, у вас же тупо табличка отправляется.
    2) Заниматься мастурбациейфигней с отправкой через mail() в 21 веке как минимум стыдно, как максимум чревато проблемами при отладке и смене функциональности, не говоря уже о том что отправка хтмл контента и приложений становится задачей со звездочкой.
    3) Все легко решается переходом на нормальную библиотеку отправки почты, пхпмэйлер/свифтмэйлер и их многочисленные аналоги.
    Ответ написан
    3 комментария
  • Как узнать что загружает php на сервере debian?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Профайлинг, не?
    Ответ написан
    Комментировать
  • Как исправить ошибку при парсинге данных PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    парсинг это не самая простая задача. И не самая быстрая. По этому нормально что парсинг происходит не очень быстро, а настройки сервера не позволяют довести дело до конца.
    Варианты:
    1) разбивайте парсер на части, где каждый шаг сохраняет результат в промежуточной таблице с полем "обработано", и вызывайте его последовательно, как отдельные скрипты
    2) Отключите ограничение на время работы скрипта, это делается либо в конфиге пхп, либо командой set_time_limit(0); Но возможно что ограничения сервера не позволят вам этого сделать.
    3) Запускайте скрипт из консоли, правда придется переписать его так, чтобы лара смогла его запустить, не помню навскидку как там организуется работа с cli скриптами, в других фреймворках часто есть возможность запустить конторллер из командной строки. В зенде вроде есть возможность использовать CliController.
    4) Очереди, раббитмкю как вариант. Формируйте очередь из задач, и они будут выполняться одна за другой как отдельные задачи.
    Ответ написан
    Комментировать
  • Как запретить скачивание файл по прямой ссылке?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Папка выше документ рута + readfile() + 2 заголовка. Ну и банальная проверка на роль.
    Ответ написан
    8 комментариев
  • Как вставить разметку Open Graf на сайт с шаблонным header?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Как реализовать разное описание страниц и заголовки я нашла - с помощью переменных.
    ну так и
    То есть проблема все же в том, что нужно помещать ее в head.
    В чем проблема то? Выводите ваши теги в хеадер, так же как и все остальное - переменными.
    Ответ написан
  • Категории не подгружаются при первой загрузке страницы, как исправить?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Судя по описанию, проблема в кэше.
    Система скорее всего вордпресс?
    Ответ написан
  • PHP - как показать изображения в браузере из папки?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Я хочу вынести ее из публичной папки.
    Зачем? Есть какая-то особенная необходимость? По логике все файлы сайта должны находиться в одной папке проекта, а файлы видимые из веба в публичной папке проекта. В некоторых случаях, например когда эти файлы не должны отдаваться без какого-то уровня доступа, их выносят выше публичной папки, таким образом закрывая от прямого доступа из веб. Далее доступ осуществляется через пхп, конкретная реализация сильно зависит от задач и имеющегося кода/фреймворка. Простейший вариант - имя файла читается как параметр из урл, далее делается readfile() из этой папки с файлами, предварительно отдаются заголовки, указывающие что это файл изображения. Хотя без понимания "зачем" реализация "как" это тыканье пальцем в небо. Может вам симлинк тупо подойдет...

    В идеале - в любое место на диске, которое захочу.
    Так делать не нужно. Это во первых нарушает безопасность, так как вы даете права на чтение из веба в папку, которая не должна быть доступной левым пользователям, во вторых распыляет проект по машине, что тоже не есть хорошо как минимум в плане организации.
    Ответ написан
    2 комментария
  • Как ОТВЕТИТЬ на письмо через PHPMailer?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Для этого в письмо-ответ надо добавить заголовок In-Reply-To с указанием значения заголовка Message-Id оригинального письма. В заголовок References ответа надо скопировать все ID из заголовка References оригинала и дописать после пробела значение заголовка Message-Id оригинального письма.

    В вашем коде я не вижу как вы получаете $message_id, который должен быть вытащен из оригинального письма, соответственно скорее всего отсутствие указание на изначальное письмо не позволяет определить к какой цепочке относится ответ.
    Ответ написан
  • Как установить PHP в режиме отладки под Ubuntu?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Но при попытке запустить этот же скрипт из командной строки я получаю ошибку о том, что расширение pdo_mysql.so не может быть загружено.
    Для cli и для "веба" разные php.ini, в которых естественно включены разные расширения.

    php --ini для cli
    phpinfo() для веба
    Ответ написан
    5 комментариев
  • В чем ошибка SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) $params собственно нужен для биндинга, чтобы не вставлять данные прямо в запрос, так как это чревато инъекциями. По этому дебильный совет "просто поменяй на $stmt->execute();" желательно проигнорировать.

    2) Вместо переменных нужно вставить плейсхолдеры, именованные или безымянные не особо важно. Естественно количество плейсхолдеров должно совпадать с количеством элементов в массиве.

    3) Даже в таком виде как у вас запрос работать не будет, так как строковые переменные в рамках запроса должны быть в кавычках.

    4) WHERE $email что? Вы вообще понимаете что и для чего пишете? Просто переведя на русский "где емэйл" не кажется вам слегка странной конструкцией? Просто загляните в документацию SQL где описывается WHERE.
    Ответ написан
    Комментировать
  • Ошибка при вызове окна сохранения, как решить?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Судя по скрину, у вас сначала выводится дофига контента, а затем вы пытаетесь отправить файл. Так как все заголовки уже отправлены, естественно никакие данные в заголовок посреди вывода контента уже не добавятся (о чем собственно и написано в варнинге).
    Ответ написан
    Комментировать
  • Как сделать возможность добавления картинки товара, загружая её перед этим в БД?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Есть ли какие-нибудь хорошие файловые хранилище с которыми удобно и практично работать?
    Файловая система. Это самый удобный и практичный метод хранения мультимедийных файлов. В зависимости от ваших возможностей, компетенций и используемых технологий, вы можете использовать как локальную ФС, так и любое облачное хранилище через соответствующее АПИ, используя драйверы доступа к файлам, например как это реализовано в Ларавел.
    Ответ написан
    Комментировать
  • Почему при попытке получить xml данные через file_get_contents() получаю timeout?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) попробовать скачать файл меньшего размера, если проблема в размере - смотреть настройки сервера, вполне возможно что это проблема апача/нжинкса/пхп на максимальный размер какого-нибудь буфера/файла (у меня он кстати не открывается до конца, хотя возможно проблема в чем-то другом). Возможно запрос через браузер выдает вам файл нормально, так как у вас он вытаскивает файл вообще из локального кеша, и вы не видите реальной проблемы в браузере.

    2) Проверить не слетели ли пермишны с файлов/папок (такое иногда бывает на хостинге) и условный пых теперь не имеет доступа к этому файлу. Тут может быть нюанс с настройкой сервера, когда локальный домен запрашивается по серому внутреннему айпи, опять же - надо смотреть настройки, например проверить лукап с сервера на домен, не выдает ли он что-то типа 192.168.10.55 .

    3) Проверить сам код, возможно он тупо зависает с каким-то бесконечным циклом и падает по таймауту... Можно вместо вывода в нем прям писать в файл и проверить все ли ок.
    Ответ написан
    Комментировать
  • Ошибки на странице после деплоя проекта на Laravel?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    {{isset($item->quantity) ? $item->quantity : '0'}}

    Единственное что могу предполагать это не совместимость версии и правил валидации кода PHP.

    APP_ENV=production 
    APP_DEBUG=false

    Плюс на локальной машине скорее всего отключен вывод варнингов.
    Ответ написан
    5 комментариев
  • Клики по динамически созданным кнопкам в форме ajax?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    делегирование.
    +$(".form-submit").on("click", ".product__add", function () {
    -$(".product__add").on("click", function () {
    Ответ написан
    Комментировать
  • Почему Laravel 8 перестал выводить ошибки?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Перестали выводится ошибки , только 500-я , в логах такие записи
    Скорее всего в .енв вы поменяли окружение с дев на прод. Соответственно ошибки только логируются.

    PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 266240 bytes) in /var/www/lobochkin28/data/www/lobochkin.ru/laravel-blog/vendor/laravel/framework... on line 215, referer: laravel-blog.lobochkin.ru/admin/category
    Скорее всего где-то у вас бесконечный цикл, или бооольшой массив. Смотрите что у вас там происходит.
    Ответ написан
  • Есть ли способ размещать публикации по APİ facebook без создания приложения?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) Руками, через форму на фейсбуке.
    2) Через сервисы у которых есть приложение, обычно стоит чуть денюжек.
    Ответ написан
    Комментировать
  • У меня php скрипт не обрабатывает до конца данные когда его веб-хук со стороннего ресурса повторно запускает, что сделать чтобы обрабатывал?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    В какую сторону копать?
    Очереди. Если хуки последовательные, а не дубли - заносите в очередь и на этом задача хука должна быть завершена, дальше должен работать механизм очереди, что там будет - раббитмкю или кафка или ларавель уже не суть важно.
    Ответ написан
    Комментировать
  • Как принять данные от JQuery.ajax на сервере php?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    На сервере пытаюсь принять так:
    Нет, ищите в $_POST

    header: 'Content-Type: application/json', а это лишнее.

    А вообще нужно уметь открыть инструменты хорма и посмотреть в нетворке что и как отправляется.

    Ну или если хочется отправить в боди, то сделать
    $.ajax({
        contentType: 'application/json',
        dataType: 'json',
        data: JSON.stringify({ some valid JSON})
    ...
    Ответ написан