Исправляем самые частые ошибки WordPress и PHP

Статьи 14.07.2022 (обновлено)

В этой статье я собираю решения, которые помогают исправлять самые частые ошибки WordPress и PHP.

Частые ошибки WordPress
Частые ошибки WordPress

Ошибка «Updating failed. You are probably offline.»

С недавнего времени столкнулся с проблемой, когда в WordPress при сохранении черновика появляется надпись «updating failed. you are probably offline» (рус. — обновление не удалось). И да, эта проблема часто возникает у тех, кто пользуется Gutenberg.

Буквально недавно я каким-то образом проникся этим редактором, хотя всё предыдущее время постоянно ставил плагин «Classic Editor», который возвращал старый добрый вордпрессовский редактор.

Для решения «updating failed» пришлось копать весь Google, но большинство решений сводилось к тому, чтобы установить плагин «Classic Editor» и не мучиться.

Но скажем честно, классический редактор — это костыль. Так как со временем все перейдут на новый Gutenberg, т.к. он удобнее априори.

Итак, если вы хотите быстрое решение в виде костыля — бежим и устанавливаем плагин Classic Editor.

Ну а тем, кто хочет разобраться — я подскажу направление куда копать.

Реальная проблема заключается в SSL и здесь два варианта:

  1. Установлен непонятный SSL
  2. Криво сделана переадресация на HTTPS.

Первый вариант — редкий и скорее всего для решения достаточно написать хостеру и попросить проверить всё ли нормально с сертификатом и правильно ли он установлен.

Если хостер скажет, что всё окай, то переходим ко второму варианту.

Второй вариант заключается в том, что есть, скажем так, конфликт переадресаций. Обычно после установки WordPress на сайт с SSL в настройках мы прописываем HTTPS, плюс у WP есть внутренняя умная переадресация. Но также есть редирект на сервере с HTTP на HTTPS.

И когда всё настроено криво, то при редактировании статей мы получаем ошибку «Mixed content», которую можно увидеть в консоли (например):

Исправляем самые частые ошибки WordPress и PHP

Какие действия можно предпринять?

1. После установки SSL на сервер мы прописываем в настройках (Настройки -> Общие) адрес Адрес WordPress (URL) и Адрес сайта (URL) с HTTPS.

2. Можно более жестко прописать в корне сайта в файле wp-config.php строки:

define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST'] . '/');
define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST'] . '/');

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

3. Устанавливаем плагин Really Simple SSL и активизируем его. Включаем редиректы в нем.

4. Далее мы можем прописать в файле .htaccess следующие строчки:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
</IfModule>

Зачем они нужны?

Очень часто при установке SSL и настройки переадресации с HTTP на HTTPS мы забываем делать переадресацию, например, с WWW на без-WWW, т.е. когда URL https://www.site.ru редиректит на https://site.ru. Эти строчки выше прописываются в htaccess с этой целью.

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

Ошибка PHPCS в VS Code «End of line character is invalid»

Исправляем ошибку Visual Studio Code PHPCS «End of line character is invalid» (Конец символа строки недействителен).

Продолжая практиковаться с PHP, я решил установить несколько дополнительных расширений для Visual Studio Code.

Одним из таких расширений является PHP CodeSniffer (PHPCS), который просто отличный!

Я установил его на стандарт PSR-2 и начал подгонять код, но не смог разобраться с решением одной из ошибок:

End of line character is invalid; expected "\n" but found "\r\n"
Исправляем самые частые ошибки WordPress и PHP

К счастью, после некоторых раскопок, я нашел решение, и я поделюсь им с вами в этом уроке.

Что вызывает эту ошибку PHPCS?

Насколько я понимаю, ошибка связана с операционной системой и кодами управления новой строки: LF (перевод строки) и CR (возврат каретки).

Некоторые операционные системы, такие как Windows, используют CRLF (или CR+LF), в то время как другие, такие как Linux, используют LF.

Итак, если вы используете Windows, Visual Studio Code по умолчанию установит код в CRLF, и, видимо, PHP CodeSniffer хочет, чтобы он был установлен в LF, чтобы перестал «кричать».

Вы можете прочитать больше об этих кодах по этой ссылке.

Исправляем ‘End of line character is invalid; expected “\n” but found “\r\n”‘ ошибку в VS Code

Я покажу вам, как установить LF в VS Code для каждого файла или по умолчанию для всех новых файлов.

Установка LF по умолчанию

Шаг 1

Перейдите в File > Preferences > Settings, найдите settings.json в поле поиска, затем кликните ссылку Edit in settings.json.

Исправляем самые частые ошибки WordPress и PHP

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

Шаг 2

Добавьте запятую после последней строки, а затем добавьте следующий код в следующей строке:

"files.eol": "\n"
Исправляем самые частые ошибки WordPress и PHP


Сохраните файл.

Примечание

  • Это не относится к существующим файлам, которые уже установлены в CRLF. Это относится к вновь созданным файлам.
  • Возможно, вам понадобится перезапустить VS Code после редактирования.

Посмотрите второй метод, как изменить CRLF на LF для каждого файла.

Установка LF вручную для каждого файла

Шаг 1

Нажмите на кнопку CRLF, расположенную справа внизу в VS Code.

Исправляем самые частые ошибки WordPress и PHP

Кроме того, Вы можете открыть Палитру команд, нажав CTRL+SHIFT+P, добавить команду «Изменить последовательность конца строки» (Change End of Line Sequence), затем выбрать LF, как показано на втором шаге.

Исправляем самые частые ошибки WordPress и PHP

Шаг 2

Нажмите на LF вверху.

Исправляем самые частые ошибки WordPress и PHP

Вот и все!

Теперь ошибка CodeSniffer ‘End of line character is invalid; expected “\n” but found “\r\n”‘ должна исчезнуть, а создаваемые вами новые файлы должны автоматически устанавливаться в LF (если вы установили его по умолчанию).

Как исправить ошибку 403 Forbidden в WordPress

Рассмотрим как исправить ошибку 403 Forbidden на вашем сайте WordPress, которая часто встречается после переноса сайтов.

Что это за ошибка

WordPress обычно показывает коды ошибок и сообщения при их возникновении ошибки на вашем сайте.

Исправляем самые частые ошибки WordPress и PHP

Ошибка 403 (Forbidden ) показывается, когда права доступа на вашем сервер не позволяют получить доступ к определенной странице.

Она, как правило, сопровождается текстом:

403 Forbidden – You don’t have permission to access ‘/’ on this server.

Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.

Существуют различные сценарии, когда вы можете увидеть эту ошибку. Например:

  • 403 Forbidden — доступ запрещен на странице входа WordPress или на странице wp-admin
  • 403 Forbidden — во время установки WordPress
  • 403 Forbidden — при посещении любой страницы вашего сайта WordPress

Также возможно, что вы увидите только «Доступ запрещен» (Access Denied) вместо полного запрещенного статуса 403.

Вы также можете увидеть «Доступ к yourdomain.com был запрещен. У вас нет прав для просмотра этой страницы» (англ. — Access to yourdomain.com was denied. You don’t have authorization to view this page).

Теперь, когда вы знаете о различных типах ошибок 403, давайте поговорим о причинах этой ошибки.

Причины ошибки

Наиболее распространенная причина ошибки 403 Forbidden в WordPress связана с плохо настроенными плагинами безопасности.

Многие плагины безопасности WordPress могут блокировать IP-адрес (или целый ряд IP-адресов), если они считают их вредоносными.

Другой возможной причиной может быть неправильный или поврежденный файл .htaccess.

Кроме того могут быть неправильные права доступа к файлам на вашем сервере.

Ваш хостер может иногда вносить случайные изменения в настройки своего сервера, что, в свою очередь, может привести к ошибке 403 Forbidden на вашем сайте.

Ниже посмотрим как исправить ошибку 403 в WordPress.

Исправляем 403 ошибку

Прежде чем что-то делать, рекомендую создать полную резервную копию WordPress вашего сайта и Базы Данных.

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

1. Если виноват плагин

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

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

Вы можете выяснить, какой из плагинов вызвал ошибку, активирую по очереди каждый плагин до тех пор, пока вы не сможете воспроизвести 403 forbidden.

2. Проблема с .htaccess

Часто ошибка 403 вызвана поврежденным файлом .htaccess на вашем сайте WordPress. Восстановить этот файл довольно просто.

Сначала вам нужно подключиться к вашему сайту, используя FTP-клиент или файловый менеджер в cPanel.

Далее, найдите файл .htaccess в корневой папке вашего сайта WordPress.

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

Исправляем самые частые ошибки WordPress и PHP

Попробуйте зайти на свой сайт. Если 403 ошибка пропала, то это означает, что ваш файл .htaccess был поврежден или неверно заполнен.

Вы можете сгенерировать новый .htaccess файл, войдя в вашу административную панель WordPress и перейдя на страницу Настройки -> Постоянные ссылки (англ. Settings -> Permalinks).

Исправляем самые частые ошибки WordPress и PHP

Просто нажмите на кнопку «Сохранить изменения» (Save Changes) в нижней части страницы и WordPress сгенерирует новый файл .htaccess.

3. Проблема с разрешениями файлов и папок

Все файлы, хранящиеся на вашем сайте, имеют права доступа. Эти права доступа к файлам определяют, кто имеет доступ к файлам и папкам на вашем сайте.

Неправильные права доступа к файлу могут вызвать ошибку запрета 403. Веб-сервер считает, что у вас нет прав доступа к этим файлам.

Если два вышеупомянутых решения не устраняют ошибку 403 на вашем сайте, то неправильные права доступа к файлам могут быть наиболее вероятной причиной.

Вы можете попросить своего хостинг-провайдера проверить ваш веб-сайт на предмет правильных прав доступа к файлам. Некоторые провайдеры очень внимательные и помогут исправить проблему.

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

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

Просто подключитесь к своему WordPress сайту с помощью FTP-клиента. Перейдите в корневую папку, содержащую все Ваши файлы WordPress.

Исправляем самые частые ошибки WordPress и PHP

Щелкните правой кнопкой мыши на нужную папку и выберите в меню пункт File Permissions (Права доступа к файлам).

Ваш FTP-клиент покажет вам диалоговое окно с разрешениями для файлов, подобное этому:

Исправляем самые частые ошибки WordPress и PHP

Все папки на вашем сайте WordPress должны иметь файловое разрешение 744 или 755.

Все файлы на сайте WordPress должны иметь разрешение 644 или 640.

Вы можете установить разрешение для корневой папки на 744 или 755.

Поставьте галочку напротив ‘Recurse into subdirectories’ (Запись в подкаталоги), а затем поставьте галочку напротив опции ‘Apply to directories only’ (Применять только к каталогам).

Нажмите на кнопку OK. Теперь ваш FTP клиент начнет задавать разрешения для всех подкаталогов в этой папке.

После этого нужно повторить процесс для всех файлов. На этот раз вы воспользуетесь файловыми разрешениями 644 или 640 и не забудьте выбрать опции ‘Recurse into subdirectories’ (Запись в подкаталоги) и ‘apply to files only’ (Применять только к файлам).

Нажмите кнопку OK, и ваш FTP клиент начнет установку файловых разрешений для всех выбранных файлов.

После данных операций попробуйте войти на сайт, 403 ошибка должна исчезнуть.

Исправляем «Cannot Validate Since No PHP Executable Is Set» в VS Code

Расскажу как бороться с проблемой «Cannot Validate Since No PHP Executable Is Set» в Visual Studio Code IDE.

Обычно для работы с PHP, JS и WordPress хватает Sublime Text 3 или даже Brackets. Они не считаются полноценными IDE, но бесплатны и справляются с большинством задач.

В последнее время я всё-таки медленно, но верно перебираюсь на Visual Studio Code, который также бесплатен, но немного тяжелее Sublime Text.

И, как это часто бывает после переезда в VS Code, у новичков при работе с PHP появляется ошибка «Cannot Validate Since No PHP Executable Is Set».

Ошибка полностью звучит так:

Cannot validate since no PHP executable is set. Use the setting ‘.php.validate.executablePath’ to configure the PHP executable.

Ну и выглядит стандартно для VS Code:

Исправляем самые частые ошибки WordPress и PHP

Суть проблемы в том, что не указан путь к исполняемому файлу PHP.

Если вы не укажете путь к исполняемому файлу PHP, код Visual Studio все равно будет работать нормально, но он не будет валидировать (проверять) код PHP, а это значит, что вы не увидите классические волнистые красные линии, когда у вас будет ошибка в коде.

Исправляем самые частые ошибки WordPress и PHP

Немного покопавшись, я нашел довольно простое решение. VS Code не для новичков, поэтому некоторые рекомендации смотрите очень внимательно.

Ниже мы исправим ошибку валидации PHP для Windows, macOS или Linux.

Обратите внимание, что я пользователь Windows, поэтому рекомендации по Linux или macOS могут быть не очень точными.

Шаг 1

Основная задача состоит в том, чтобы выяснить, где находится ваш исполняемый файл PHP (php.exe).

Это зависит от того, какую Операционную систему и среду разработки вы используете. Из возможного могут быть — OpenServer, XAMPP, WAMP и т.д.

В настоящее время я использую XAMPP и на другой машине OpenServer. Первый установлен на моем диске C: в Windows 10, поэтому файл php.exe находится в: C:/xampp/php/php.exe.

Для пользователей MacOS или Linux обычный путь — это /usr/bin/php.

Для OpenServer исполняемый php.exe находится по адресу:

 C:\OpenServer\modules\php\PHP_7.3\php.exe

Для OpenServer вы также можете выбрать папку с нужной версией PHP, я работаю с версией 7.3 и поэтому в адресе использовал именно папку с этой версией.

Шаг 2

Как только вы узнали, где находится ваш исполняемый файл PHP, откройте Visual Studio Code и перейдите в настройки, выбрав:

Файл -> Установки -> Настройки (File -> Preferences -> Settings)

Исправляем самые частые ошибки WordPress и PHP

Шаг 3

На панели настроек поиска (Search Settings) введите settings.json.

Затем нажмите на ссылку «Изменить в settings.json» (Edit in settings.json).

Исправляем самые частые ошибки WordPress и PHP

Добавьте запятую после последней строки кода, какой бы она ни была, затем добавьте:

"php.validate.executablePath": "C:/xampp/php/php.exe"

Или так для пользователей MacOS и Linux:

"php.validate.executablePath": "/usr/bin/php"

Для наглядности выглядеть должно так:

Исправляем самые частые ошибки WordPress и PHP

Конечно, ваш путь к файлу php.exe может быть другим, как я упоминал на шаге 1, поэтому убедитесь, что вы заменили «C:/xampp/php/php.exe» на свой правильный путь.

Также обратите внимание на слеши, они должны быть именно такими, иначе вы получите ошибку.

Не добавляйте запятую после, если это будет последняя строка кода.

Шаг 5

Сохраните файл, выбрав Файл -> Сохранить (File > Save) или нажав CTRL+S (для Windows).

Я думаю, что это CMD+S для MacOS.

Шаг 6

Закройте Visual Studio Code и откройте его снова. Предупреждение должно исчезнуть.

Шаг 7 (для пользователей Windows)

Убедитесь, что PHP добавлен в PATH вашей среды. Я думаю, что XAMPP добавляет его автоматически, но все равно стоит проверить, т.к. при установке не все среды разработки делают это автоматически.

Ищем «среду» (environment) в Windows:

Исправляем самые частые ошибки WordPress и PHP

На вкладке «Дополнительно» (Advanced) нажмите «Переменные среды» (Environment Variables).

Исправляем самые частые ошибки WordPress и PHP

Нажмите на строку Path, чтобы выбрать ее, затем нажмите Edit.

Исправляем самые частые ошибки WordPress и PHP

Отредактируйте или добавьте новый путь PHP (например, C:\XAMPP\php).

Исправляем самые частые ошибки WordPress и PHP

Не добавляйте исполняемый файл (.exe), как в файле .json. Только добавьте папку.

Если вы используете виртуальную машину в Windows

Например, для разработки Laravel я использую среду Homestead в Windows 10, которая использует Ubuntu в качестве сервера. Он также поставляется с предварительно упакованным программным обеспечением, таким как PHP.

Если я хочу узнать, где находится PHP на сервере, я использую команду:

$ which php

Она покажет, что PHP находится в /usr/bin/php.

Исправляем самые частые ошибки WordPress и PHP

Теперь, если я использую этот путь в VS Code, он не будет работать, потому что его нет на моем диске. VS Code не может заглянуть на мой сервер.

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

Я не знаю, есть ли обходной путь. Если вы это сделаете, то дайте знать в комментариях.

Дополнительно попробовать, если что-то не работает

Некоторые говорят, что у них всё заработало только когда они добавили две косые черты для пути в файле settings.json, например так:

"php.validate.executablePath": "C://xampp//php//php.exe"

Для кого-то всё заработало с обратными слешами:

"php.validate.executablePath": "C:\xampp\php\php.exe"

Добавление вот такой строки в дополнение к php.validate.executablePath может также исправить ситуацию

"php.executablePath": "C:/xampp/php/php.exe"

Надеюсь, вы нашли это руководство полезным и исправили ошибку валидации PHP в Visual Studio Code.

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

Исправляем ошибку «Notice: Undefined index:» в форме PHP

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

Notice: Undefined index: filename in D:\wamp\www\update.php on line 4

Поговорим о том, как можно исправить эту небольшую ошибку?

Допустим у нас есть файл update.php:

<?php
    $index = 1;
    $filename = $_POST['filename'];

    echo $filename;
?>

И $_POST['filename'] приходит с другой страницы:

<?php
    $db = substr($string[0],14) . "_" . substr($string[1],14) . "_db.txt";
?>

<input type="hidden" name="filename" value="<?php echo $db; ?>">

Предполагаем, что форма включает:

<form method="POST">

Мы можем применить решение ниже, в котором если _POST не установлен, то переменной имени файла не будет в приведенном выше примере.

if(isset($_POST['filename'])){
    $filename = $_POST['filename'];
}
if(isset($filename)){ 
    echo $filename;
}

Альтернативный способ:

$filename = false;
if(isset($_POST['filename'])){
    $filename = $_POST['filename'];
 } 
    echo $filename; //guarenteed to be set so isset not needed

В данном примере имя файла задается независимо от ситуации с _POST. Это должно хорошо продемонстрировать использование isset.

Более подробная информация по функции isset по этой ссылке.

Также пользователи поделились таким примером решения:

if(isset($_POST['form_field_name'])) {
    $variable_name = $_POST['form_field_name'];
}

Вот такое решение должно помочь справиться с проблемой.

Сергей Ермилов
Опубликовано 14.07.2022
Категория: Статьи
Теги: ,

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

Ваш адрес email не будет опубликован.