Для проверки, зарегистрировано ли доменное имя, можно использовать стандартную функцию PHP -  checkdnsrr с параметром ANY. 

Смысл такой - если найдена хотя бы одна любая запись DNS, то домен зарегистрирован. 

Пример: 

 if ( checkdnsrr('podelitsa.ru', 'ANY') ) {
echo "Запись DNS найдена - домен зарегистрирован";
} else {
echo "Нет записей DNS - домен не зарегистрирован";
}

Рассмотрим случай, когда нужно в PHPUnit запустить определенный testsuite из командной строки. 

К примеру в файле конфигурации phpunit.xml добавлены такие testsuites:

<testsuites>
<testsuite name="all">
<directory>tests</directory>
</testsuite>
<testsuite name="custom">
<directory>tests/dir1</directory>
<directory>tests/dir2</directory>
</testsuite>
</testsuites>

И цель - запустить только testsuite  с именем custom. 

Это можно сделать с помощью такой команды:

 vendor/bin/phpunit --testsuite custom

Эта ошибка происходит потому что файл конфигурации phopunit.xml содержит устаревшую структуру. 

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

vendor/bin/phpunit --migrate-configuration

Ситуация - в файле phpunit.xml прописаны env переменные, которые должны подменить заданные в файле .env, но при тестировании это не срабатывает.

Пример: 

<php>
<env name="mytest" value="testvalue" />
</php>

Это происходит потому что по умолчанию PHPUnit не перезаписывает значения env переменных, если они уже заданы. Чтобы значения env перезаписывались, необходимо добавить параметр force="true":

<php>
<env name="mytest" value="testvalue" force="true" />
</php>

Пример файла:    

<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
bootstrap="vendor/autoload.php"
backupGlobals="false"
backupStaticAttributes="false"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd">
<coverage>
<include>
<directory suffix=".php">src/</directory>
</include>
</coverage>
<testsuites>
<testsuite name="Project Test Suite">
<directory>tests</directory>
</testsuite>
</testsuites>
<php>
<env name="TEST_ENV_VARIABLE" value="test" />
</php>
</phpunit>


Возможно кому-то пригодится, английская инструкция по применению к популярному египетскому лекарству от простуды 123 (таблетки). 

К сожалению, на русском инструкции нет, но на английском тоже можно расшифровать. 

Допустим, у вас есть полный путь до файла C:\testfolder1\testfolder2\mytest.txt  и вы хотите получить отдельно название файла mytest.txt и отдельно путь  C:\testfolder1\testfolder2\

Приведем пример, как это можно легко сделать с помощью PHP:

$path = 'C:\testfolder1\testfolder2\mytest.txt';
$fileName = basename($path);
$pathName = dirname($path);
var_dump($fileName); // выведет "mytest.txt"
var_dump($pathName); // выведет "C:\testfolder1\testfolder2"

Самый простой способ добиться ошибки "Connection timed out" - это пробовать подсоединиться к любому из не маршрутизируемых IP-адресов.  Как только ошибка воспроизведена, можно тестировать ее обработку.

Пример такого адреса: 

10.0.0.0

Бывают ситуации, когда таблица генерируется с дополнительных html внутри тегов td, к примеру: 

<td><span style="color: #ff0000;">20</span></td>

В таком случае лишний HTML может влиять на сортировку по колонке и она может работать не корректно (аналогичная ситуация и с фильтрами).

Самый простой способ - это прописать в HTML дополнительный параметр, по которому dataTable будет вести сортировку - data-order. 

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

<td data-order="20"><span style="color: #ff0000;">20</span></td>

В данной ситуации DataTable автоматически будет знать, что сортировать надо только по цифре 20, а не по всему указанному HTML коду. 

Подробнее можно почитать тут. 

Если необходимо в тег  img  вывести картинку, созданную / открытую с помощью библиотеки Imagick, то вам поможет данный код: 

$image = new Imagick();
$image->readImage("test.jpg");

//сам вывод в тег:
echo '<img src="data:image/jpg;base64,'.base64_encode($image->getImageBlob()).'" alt="тест картинки" />';

 

Если вы столкнулись с ошибкой “This extension requires the Microsoft ODBC Driver for SQL Server to communicate with SQL Server”, но при этом у вас установлен и активен  pdo_sqlsrv, дело вот в чем:

необходимо установить  драйвер ODBC 11.

Скачать драйвер можно по этой ссылке. 

Такая ошибка возникает когда в строке запроса пытаетесь прописать такое (встречается кое-где в документации):

Trust Server Certificate=true

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

Правильный вариант: 

TrustServerCertificate=true

Проблема: в приложенных к e-mail файлах, у которых русское название, это название становится не читабельным в эмайл клиентах. 

Решение: когда создаете attachment к письму, надо прописать кодировку и различные другие параметры.

Пример рабочего варианта: 

$filename = 'название файла.docx';
$mime->addAttachment($attachmentContent, $contentType, $filename, false, 'base64', 'attachment', '', '', '', 'base64','utf-8', '', 'utf-8');

Про все параметры данной функции можно подробно прочитать тут. 

Что делать, если вы столкнулись с ошибкой “Warning: PHP Startup: Unable to load dynamic library 'ext\php_pdo_sqlsrv_74_ts_x64.dll' - The specified procedure could not be found.” при старте PHP?

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

Если с адресом все в порядке (как было у меня), то тут нужно внимательно проверить соответствие версий. К примеру php_pdo_sqlsrv_74_ts_x64.dll  подразумевает что у вас установлен php 7.4 и ваша машина имеет архитектуру х64. В моем случае был установлен PHP 7.3 - поэтому не работало.  К примеру, для PHP 8 нужно загружать другую версию библиотеки - php_pdo_sqlsrv_80_ts_x64.dll

Это решение может помочь тем, кто использует Cloudflare. 

Если вы заметили, что Request::ip возвращает не ваш ip, а совсем другой - этому есть объяснение. 

Дело в том, что Cloudflare заменяет реальные ip адреса посетителей своими ip адресами, так как трафик проходит сквозь Cloudflare.

Решение: 

Тем не менее Cloudflare предоставляет информацию об оригинальном ip клиента. Это можно взять из дополнительных записей массива $_SERVER:

$_SERVER["HTTP_CF_CONNECTING_IP"]

Дополнительно можно узнать страну посетителя: 

$_SERVER["HTTP_CF_IPCOUNTRY"]

(для России выведет “RU”. 

Если вы столкнулись с ошибкой “IndentationError: expected an indented block” в Python, то первое, что необходимо сделать, это проверить корректность отступов. 

Так как отступы играют важную роль при программировании на Python, то их не правильное расположение может привести к ошибкам. 

К примеру возьмем вложенный цикл. 

Такой код вызовет данную ошибку: 

for x in range(100):
for y in range(200):
print(x, y)

Ошибка возникнет потому что  print(x, y) стоит на одном уровне с конструкцией for. 

Чтобы ее исправить, достаточно всего лишь отступа: 

for x in range(100):
for y in range(200):
print(x, y)