У меня есть следующий код, который определяет, является ли изображение SVG или нет, чтобы оно отображало источник, если оно есть (SVG может затем быть окрашен с помощью CSS):
if (strpos('url_to_an_image', '.svg') !== false) {
echo file_get_contents('url_to_an_image');
} else {
echo '<img src="url_to_an_image" />';
}
Это работало нормально, пока я не добавил ограничение IP в htaccess, когда я получил следующую ошибку:
file_get_contents (http://example.com/images/icons/icon-email.svg): не удалось открыть поток: ошибка HTTP-запроса! HTTP / 1.1 403 Запрещено
Я пробовал решения, которые предлагают подделку реального запроса браузера; они не работают.
Есть ли другое решение для этого или другой подход, который я мог бы использовать для отображения SVG?
Вы получаете ошибку 403, потому что у php нет разрешения на открытие этого файла. Какой ваш точный код для блокировки IP-адресов?
Не используйте URL, когда он находится на вашем собственном сервере, просто используйте абсолютный путь.
У меня была та же проблема и, наконец, выяснил, что случилось. Мой провайдер VPS вставил «запретить всем» в .htaccess после добавления огромного списка «разрешенных от» IP-адресов.
Они сделали это из-за атаки бонета на сайт.