Как исправлять файлы php

Исправляем ошибки шаблона сайта в соответствие с версией php 8

Как известно, не так давно вышла новая версия php 8 — замечательно! Исправлены недочёты предыдущих версий, внесены некоторые корректировки в язык программирования и т.п. словом, по заявлениям разработчиков — php стал много быстрее и безопаснее! Хорошо. Но мы понимаем, что в php 8 ошибок больше и он медленнее, чем, скажем, грядущий php 9. Но это не суть… а суть в том, что наши сайты бесспорно нуждаются в модернизации! Например, многие, если изменяют на хостинге версию до обновленной, то сайты просто-напросто ложатся: белый экран. И, если у нас шаблон сайта не обновляется (и мы не используем дочернюю тему), то никто за нас исправления в код шаблонов не внесёт. Сайт не будет нормально работать.

…я за последнее время многим правил шаблоны под новый php. Пришло время написать небольшую статью по теме, как исправить ошибки шаблона сайта для php 8. Сделаю, на основе ваших пожеланий, видеоролик, в котором мы прямо на рабочем сайте от начала (когда сайт «ложится» и до конца (когда вновь заработает») поправим шаблон, так что пишите пожелания о темах, которые нужно включить в ролик (если тема версий php в связке с WordPress будет интересна, буду её расширять, дополнять. Так что жду откликов…).

Читайте также:  Inurl admin login php

нужно ли править шаблон под новые версии php?

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

Однако по статье приведу несколько примеров, а вы уж делайте выводы.

К примеру, вы решили оставить для своего сайта устаревшую версию. идет время… плагины и вообще все окружающие веб мощности естественным образом обновляются… Вывод, через какое-то время ваш сайт откажется работать с обновленными плагинами и т.п. Вам придется сайт заморозить! т.е. использовать старый функционал. Хорошо это или плохо!? ответить трудно.

Если немного смыслите в сайтостроении — это одно дело, а если — нет, это совсем иное…

Думаю, как ни крути, но самое логичное — постепенно — приводить код шаблона в порядок.

В текущем посте дам несколько вариантов исправления ошибок по текущим версиям php. У вас, конечно, могут возникнуть какие-то иные ошибки… Пишите о них, поправим…

написание кода, комментирование кода php — правила

…предположим, ваши сайты работали на php 7.4 .

Для того, чтобы приступить к глобальным правкам шаблона, подготовим сайт на текущей старой версии:

Рекомендую создать копию сайта и выполнять правки на тестовом варианте сайта (как создать тестовый сайт за несколько минут).

Возможно, послужит пользой прочесть об истории обновлений версий Вордпресс.

подготовка шаблона к включению на сервере версии php 8

О том, что плагины должны быть обновлены, разговор выведем за скобки — это и так ясно!

Первое, с чего начнем концерт, это обратим внимание на написание кода в шаблоне: php 8 строже относится к помаркам в коде. К неряшливому коду…

Проверьте файлы шаблона. Отнеситесь внимательнее к комментариям в коде.

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

то есть должно быть /* коммент */ .

Подробнее читать как закомментировать код HTML, CSS, PHP, JS (есть подробное видео).

установим на сайте плагин Query Monitor

Устанавливаем и активируем плагин…

…и, конечно же, непосредственно перед правкой добавляем в константу define(‘WP_DEBUG’, true); параметр true .

это в конфигурации сайта — в файле по пути /домен/public_html/wp-config.php — файл wp-config.ph p

Этап подготовки сайта для смены версии php считаем законченным.

переходим к основному решению задач перехода сайта на новую версию php 8

Непременно включаем всё наше внимание!!

…и переходим в соответственный раздел настроек хостинга и переключаем сервер на php 8 .

…как правило после смены версии сервера, сайт падает!!

Открываем, например, главную страницу сайта (фронтэнд) — ну или админку.

То, что мы используем в конфигурации сайта дебаггер… и плагин Query Monitor нас здорово выручит! В этом случае перед нашими глазами будет не молчаливый белый экран, но подсказки ошибок.

…на белом листе сайта появятся подсказки о возможных ошибках (у кого-то может быть сайт и не совсем сломается… то есть будут частично видны элементы сайта, но в любом случае дебаггеры укажут подсказки о возможных ошибках, с решения которых — методично — и приступаем к исправлению):

php 8 ошибки шаблона сайта

Проходим по указанным путям и выполняем правки шаблона. На этом этапе, как правило, указываются главные ошибки — на которых спотыкается сервер. Все их нужно исправить.

Скрин выше, как раз указывает на то, как я и говорил выше, что комментарий в финале кода шаблона не закрыт. Поправляем, если у вас что-то подобное…

Подробнее станем разбираться в видеорлике.

ошибки или несоответствия кода шаблона для версии php 8

примеры ниже — только принципиальные примеры, возможные решения!

по мере испрвления ошибок шаблона — плагин Query Monitor подскажет о том, что в коде шаблона используется устаревшая функция, которая теперь вызывает фатальную ошибку в версии php 8 :

Функция create_function() — достаточно частая ошибка в старых шаблонах.

Дело в том, что функция create_function() считается устаревшей и в более новых версиях php будет вызывать ошибки. Так в версии php 8 она вызовет фатальную ошибку.

Исправляем примерно такими вариантами:

Например, есть известный код (фильтр) относительно безопасности сайта — многие его используют:

// уборка ошибки неправильный логин/пароль для ранних версий php 8 add_filter( 'login_errors', create_function( '$a', "return null;" ));

данный фильтр в php 8 теперь вызывает фатальную ошибку!

Исправить create_function можно следующим образом: (заменяем create_function на анонимную функцию — подробности о функциях в этой статье опускаю).

// первый вариант для версий php 8 = будет пустое поле ошибки: //add_filter( 'login_errors', fn()=> null );
//2 вариант для версий php 8 function no_logs_s() < return 'Вы совершили ошибку при наборе данных'; >add_filter( 'login_errors', 'no_logs_s' ); /*уборка ошибки неправильный логин/пароль*/
// неправильно - устаревший пример if($this->options['general']['clean_exerpts'])
// ИСПРАВЛЕНО: if($this->options['general']['clean_exerpts']) < add_filter('excerpt_more', fn()=>null ); >

create_function(», ‘return «»;’) — заменим на: fn()=> null

для владельцев магазинов на WooCommerce — ошибки сайта-магазина по версии php 8

Если вы работаете с плагином WooCommerce, то вам будет полезно примерно такой вариант решения (много решений — функции Wooc для владельцев магазина):

//число товаров на странице витрины МАГАЗИНА add_filter('loop_shop_per_page', create_function('$cols', 'return 9;'));
// исправлено add_filter('loop_shop_per_page', function( $cols ) < return 9; >, 20);

Этот пример: create_function(‘$cols’, ‘return 9;’) заменим на: function( $cols ) < return 9;

То есть заместо устаревшей create_function() используем ананимную (альтернативную) функцию function() .

И так далее… в подобном духе исправляем и остальные несоответствия в коде шаблона с обновленной версией php 8 .

Обращайте внимание на добавленный в functions.php активного шаблона код из уруков на веб сайтах — код может иметь ошибки, которые в ранних версиях php более-менее отрабатывали.

…в кодах могут быть на первый взгляд незначительные ошибки, примеру неустановленные одинарные кавычки — всё это в новой версии php вызовет НЕ ТОЛЬКО неотработку отдельного кода, но и фатальную ошибку!

Напоминаю: в видео, которое сейчас готовлю, расскажу по исправлениям ошибок поэтапно. Опишите свои вопросы…

Подробнее об изменениях ЯПа модно почитать в обзоре (на хабре).

Как правильно закомментировать код HTML, CSS или PHP, JS

Михаил ATs — владелец блога запросто с Вордпресс — в сети нтернет давным-давно.

. веб разработчик студии ATs media: помогу в создании, раскрутке, развитии и целенаправленном сопровождении твоего ресурса в сети. — заказы, вопросы. разработка.

Источник

Как отредактировать данные в php файлах?

Всем привет! В общем суть вопроса такая, на сайте в папке лежат файлы с данными (в основном там определенные цены в одну строку), как при помощи php можно через форму можно редактировать данные?

site.ru/price/
.
vodoprovod.php
elektrika.php
malyarka.php
.

Или это бесполезное занятие и лучше сделать хранение этих данных в mysql?

Простой 7 комментариев

Вообще конечно пофиг в чем хранить, можно и в БД, можно и в файлах. Но явно не в файлах с расширением php. А как отредактировать — мы ж не знаем что у вас там в файлах харнится. Может там JSON. Или CSV. Или еще что нибудь

Dark_Dante, формально можно и в файлах php хранить — загружать простым include, а для записи есть функция var_export

отличное место применения php и var_export — хранение конфигов или справочников, редактируются редко, и должны загружаться максимально эффективно (кстати тесты говорят что igbinary_unserialize быстрее) и могут быть отредактированы человеком (php человекочитаемый, var_export форматирует вывод)

еще отличное место применения var_export — тесты, когда нужно максимально просто и быстро подготовить нужное содержимое памяти перед запуском теста

ну и отладка через логирование

Rst0

6251474963f26135098541.png

подойдет?

anadikt

const File_NAME = 'file.php'; $content = file_get_content(FILE_NAME); //какая то операция над контентом file_put_content(FILE_NAME, $content);

FanatPHP

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

Чтобы при помощи php можно через форму можно редактировать данные, они не должны лежать в РНР файлах.

anadikt

FanatPHP

anadikt

FanatPHP

Правильно
Так всегда и бывает
Чтобы было проще для пользователя, усложняется код
и сайт перестаёт быть статическим

Lopar

Если у вас полностью статичный сайт и вы не хотите усложнять, то ваша текущая реализация самая неубиваемая.

Если хочется немного удобнее, но всё ещё просто, используйте для хранения цен csv файл, который удобно редактируется в Microsoft Excel, а дальше обрабатывается функцией fgetcsv.

Если хочется поиграться с базами, но всё ещё не переусложнять, посмотрите на БД SQLite — это хорошая база под ваши задачи, при этом все данные она хранит в единственном файле, который удобно переносить в случае чего. Скорее всего вам с головой хватит.

MySQL будет чрезмерной. Всё таки отдельное приложение, пусть и встречающееся буквально везде, но это лишние телодвижения и не очень тривиальные бекапы. Можно, но незачем.

anadikt

FanatPHP

Первый и главный вопрос, на который нужно ответить при хранении данных — существует ли ‘многопользовательский’ (а точнее множественный одновременный) доступ к этим данным, только ли он на чтение или возможна одновременная запись? есть ли особенности по блокировке записи (например пользователь открыл форму, прочитав данные, и пока он не нажал сохранить или отменить — доступ к данным другим пользователям закрыт) и т.п.

Третий — на сколько сложные запросы по поиску и фильтрации у тебя есть

И если многопользовательского доступа нет и данных не много (максимум мегабайты) и работа с данными простая, то можно совсем не заморачиваться с базами данных и хранить все в файлах. Для этого в php есть несколько инструментов сериализации любых данных в строки (массивы, объекты. строки и т.п.):

serialize, json_encode, php_export (этот формирует строку в формате php, т.е. загрузить такой файл можно просто импортировав его в код), относительно недавно появился igbinary_serialize (расширение идет в поставке с php) — отличный бинарный формат, достаточно эффективный и наверное самый быстрый из существующих.

Так же сериализовать в файл можно не сразу все данные а по объекту на файл (файловая система ОС — отличная key-value база данных, удобная быстрая, но без нормальной поддержки многопользовательского доступа, точнее можно с помощью блокировок но сложно), благодаря чему можно решать очень сложные задачи без оверхеда на место на диске, процессор и лишний кодинг. Недостаток этого подхода — индексы реализовывать придется самому.

p.s. по теме конкретно сформулированного вопроса, гугли CRUD, это готовые инструменты по create,read, update, delete объектов, которые тут же описываешь. Так или иначе эти механизмы мого кто реализует в своих фреймворках

но начинающему настоятельно рекомендую пройти весь путь от самописных структур данных и работе с sql

Источник

Оцените статью