Ответы пользователя по тегу PHP
  • Почему браузер не видит стили?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Да, нужно сделать проверку, что файла не существует. Т.е.
    RewriteEngine on
    RewriteBase /internet-shop/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php
    Ответ написан
    2 комментария
  • PHP фрэймворк или CMS?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Я бы посоветовал вот что: попробовать несколько CMS, обращая внимание, в первую очередь, на пункты 4 и 5: хватает ли возможностей CMS для обеспечения нужных вам разграничений привилегий или нет. Если найдете подходящую, то дальше останется дописать недостающие модули, если нет, то придется писать свое.
    Ответ написан
    Комментировать
  • Не работать get_headers и file_get_contents?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    1) замените <? на <?php
    2) проверьте, разрешена ли опция allow_url_fopen в php.ini (или в настройках хостинга). Скорее всего, она выключена.
    3) если не поможет, попробуйте сделать следующее:
    ini_set('display_errors',true);
    error_reporing(E_ALL);
    Это включит вывод отладочной информации, которая поможет разобраться, в чем же там проблема. (Только потом желательно это отключить.)
    Ответ написан
    1 комментарий
  • Как отслеживать/логгировать обращения к php файлам со стороны сервера?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Если у вас VDS, то по умолчанию логи Apache, скорее всего, включены и лежат где-нибудь в /var/log/apache2 или /var/log/httpd. Если обычный хостинг, то скорее всего, в каталоге /logs в корне.
    Но по ним можно увидеть только тот php-файл, который запускался напрямую, а подключаемые через include/require там не появятся. Если нужно отслеживать и их тоже, то воспользуйтесь функцией get_included_files(), и допишите в конец каждого из вызываемых скриптов код, который будет писать список подключенных файлов в лог.
    Код примерно такой:
    $files = join(',',get_included_files())."\n";
    $fh = fopen('php.log','a');
    if ($fh) fputs($fh,$files);
    fclose($fh);
    Ответ написан
    Комментировать
  • Сайт падает иногда + при каждом посещении nginx выдает ошибку?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Посмотрите, нет ли чего подозрительного в cron (причем как под rootом, так и под пользователем, от имени которого работает сайт), например, криво написанного скрипта для backup.
    Ответ написан
    Комментировать
  • Как связать javascript и php?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Если совсем на пальцах, то нужно при нажатии пользователем на кнопку Like нужно сделать отправку на сервер AJAX-запроса, где в конец будет добавлено ?id=номер_поста. Взять его можно либо из URL (распарсив document.location.href), либо заранее вставлять в страницу при генерации на стороне сервера (т.е. будет что-то вроде ).
    Ответ написан
    Комментировать
  • Не получается сделать редирект?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Скорее всего, config.php сохранен в текстовом редакторе, который добавляет символ BOM в начало файла. Тогда надо в настройках редактора это отключить и пересохранить файл заново.
    Еще вариант — добавить в начало скрипта (до require) вызов функции ob_start для буферизации выводимых данных, это может серьезно облегчить жизнь в дальнейшем.
    Ответ написан
    Комментировать
  • На одном сайте nodejs с php?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Можно. Либо запускать прямо из php через exec (но могут быть проблемы с производительностью из-за этого, если система сильно загружена), либо прописать для Web-сервера rewrite rules так, чтобы часть запросов шла на обработку PHP-скриптам, а часть — проксировалась на порт, на котором висит сервер, работающий на node.js.
    Ответ написан
    Комментировать
  • Почему запрос работает из PHP, но не из консоли?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Это из-за так называемого strict mode, включающего ряд дополнительных проверок, в том числе невозможность записи строки в double. В консоли он по умолчанию включен, в PHP — выключен.
    Чтобы его отключить, нужно сделать запрос
    SET SESSION sql_mode = '';
    Ответ написан
    Комментировать
  • Как загрузить испорченную картинку через php?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Не очень понятна задача. Если нужно конкретно эту картинку загрузить, то можно открыть ее в каком-то графическом редакторе и сохранить заново (либо сконвертировать в PNG, а потом обратно в JPEG на своем компьютере), а потом загружать.
    Если требуется убрать предупреждения при загрузке поврежденных картинок вообще, то нужно поставить @ перед imagecreatefromjpeg.
    Ответ написан
    Комментировать
  • Из базы данных выводятся ????? вместо кириллицы?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Кроме БД, проблемы с кодировкой могут быть в других местах.
    Во-первых, на сервере. Если это Apache, то имеет смысл прописать что-то вроде AddDefaultCharset utf-8 в .htaccess
    Во-вторых, проверить, не используется ли шрифт, не поддерживающий кириллицу.
    В-третьих, попробовать прописать в начале скрипта ini_set('mbstring.internal_encoding','UTF-8'), чтобы не возникало проблем при обработке строк в самом PHP.
    Ответ написан
  • Почему при mysqli_close($link) в конце файла ошибка 504 Time-out?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Скорее всего, у вас остаются невыбранные данные после выполненных запросов. Сделайте после всех SELECT-запросов mysqli_free_result($res).
    Автоматически соединение может не закрываться, если PHP работает с использованием persistent_connections (а также, возможно, в режиме FastCGI, но точно не уверен, нужно документацию смотреть).
    Ответ написан
    Комментировать
  • Откуда быстрее брать данные?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Зависит от того, возможен ли одновременный приход данных из разных источников (скажем, два пользоваеля сразу обратились к сайту). Если да, то лучше SQL, так как без него придется самостоятельно делать блокировку файла, чтобы не получилось так, что оба пользователя пишут одновременно. Но базы данных SQL вполне можно поместить и на SSD.
    Вообще, информации, конечно, маловато, но так сходу могу предположить, что лучше всего на данном этапе вам подойдет SQLite.
    Ответ написан
  • PHP При каких обстоятельствах приходит пустой IP человека?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Тут есть два варианта. Первый — пользователь заходит через IPv6, а скрипт пытается преобразовать его адрес с помощью ip2long, который корректно понимает только IPv4. Второй — пользователь заходит через proxy, который что-то передает в X-Forwarded-For, что некорректно преобразовывается в IP-адрес (например, передает не IP, а доменное имя).
    Чтобы этого не было, нужно сохранять IP не как число, а как строку, причем сохранять туда и $_SERVER['REMOTE_ADDR'], и $_SERVER['HTTP_X_FORWARDED_FOR'] (тогда как многие скрипты при наличии второго REMOTE_ADDR просто отбрасывают).
    Ответ написан
    Комментировать