Проблема с кешем Favicon PHP

Нашел этот PHP-скрипт на GitHub https://github.com/ao/favicons и, кажется, работает хорошо. Легко встраивается в другие скрипты, которым может понадобиться фавикон.

ПРИМЕЧАНИЕ. Кажется, уважаемый пользователь советует не использовать этот код... См. комментарий ниже...

Проблема, с которой я сталкиваюсь, заключается в том, что cachine работает неправильно. Если вы посмотрите на index.php, вы увидите:

<?php
error_reporting(0);
// Change the location where images are stored/retrieved
//$_CACHE_PATH = "../favicon_cache";    // one directory up
$_CACHE_PATH = "cache";                 // current directory
if (!isset($_GET['url'])) die();

if (substr( $_GET['url'], 0, 4 ) !== "http") {
    $_GET['url'] = "http://".$_GET['url'];
}
$parse = parse_url($_GET['url']);
$domain = $parse['host'];
if (isset($_GET['refresh'])) {
    @unlink('../'+$_CACHE_PATH+'/'.$domain);
}
if (isset($_GET['debug'])) {
    require 'FaviconDownloader.php';
    $_favicon = new FaviconDownloader($_GET['url']);
    $_favicon->debug();
    die();
}
if (file_exists($_CACHE_PATH+'/'.$domain)) {
    //show cached copy first!
    header('Content-Type: image/png');
    echo file_get_contents($_CACHE_PATH+'/'.$domain);
    die();
}
require 'FaviconDownloader.php';
$favicon = new FaviconDownloader($_GET['url']);
if ($favicon->icoExists){
    if (!file_exists($_CACHE_PATH+'/'.$domain)) {
        file_put_contents($_CACHE_PATH+'/'.$domain, $favicon->icoData);
    }
    header('Content-Type: image/png');
    echo file_get_contents($_CACHE_PATH+'/'.$domain);
} else {
    header('Content-Type: image/png');
    echo file_get_contents('default.png');
}
?>

Весь index.php: https://github.com/ao/favicons/blob/master/index.php

Независимо от того, на что я меняю папку кеша, все фавиконы все равно пишутся в корневую папку. Пробовал несколько настроек с кодом, но ничего не работает. Удаление error_reporting(0); в верхней части index.php не показывает никаких дополнительных ошибок (показывает только: ресурс интерпретируется как документ, но передается с типом MIME image/png в консоли разработчика).

Моя папка кеша доступна для записи и правильно назначена владельцу, поэтому я уверен, что это не проблема.

Начал задавать вопрос/открывать проблему на GitHub, но вижу, что у другого человека такая же проблема, но нет ответа от автора. В надежде, что кто-то здесь с лучшими навыками PHP, чем я, может указать мне правильное направление.

Даже самый простой учебник скажет вам, что + не является оператором конкатенации в PHP. Кто бы это ни написал, вы не хотите использовать их код. Для всего.

miken32 09.04.2019 17:59

Хорошо, спасибо, что проголосовали за мой вопрос. Просто нужен совет.

Woody 09.04.2019 18:03

Трудно понять, почему люди голосуют против вопроса. Не мой код, только попросил совета, как исправить.

Woody 10.04.2019 04:58

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

miken32 10.04.2019 21:24
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
4
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны использовать оператор точки (.) для объединения строк, например

echo file_get_contents($_CACHE_PATH+'/'.$domain);

следует изменить на

echo file_get_contents($_CACHE_PATH.'/'.$domain);

Спасибо @ReZa. Я уже пытался заменить все + на . но не повезло. Фавикон перестает отображаться и странно, никаких ошибок не отображается и не регистрируется.

Woody 09.04.2019 18:29

Вы отключили отчеты об ошибках с помощью error_reporting(0); чтобы вы не видели ошибок‌ @Woody

ReZa 09.04.2019 18:32

Еще раз спасибо @ReZa. У меня на самом деле отчеты об ошибках закомментированы на моем тестовом сервере. У автора скрипта на GitHub он активен, у меня нет. Но, похоже, мне нужно было перевести ClouldFlare в режим разработки, чтобы увидеть мои изменения. Кажется, сработало с вашим советом :)

Woody 09.04.2019 18:35

Другие вопросы по теме

Похожие вопросы

Использование (preg_replace), и я думаю, что мой синтаксис немного отличается. Мне нужно выйти из чего-то или другого
Проблема с отображением данных с отношением «многие ко многим» в Laravel
Как использовать required_if в полях файлового массива с массивом в качестве первого аргумента?
Удалить все слова из строки "#User#,<br><br>Спасибо#За предоставление" между "#User#" и "#" А также извлечь "#User#" из строки
Форма не собирает пользовательский ввод, и запрос не работает должным образом, хотя я ввел правильную таблицу и столбец
Соединение WebSocket с ошибкой: ошибка при установлении соединения: net::ERR_CONNECTION_TIMED_OUT
Продолжайте получать ошибку «Преобразование массива в строку» при попытке запустить метод конкатенации
Можно ли редактировать бэкенд TYPO3?
Автозаполнение поиска в Laravel 5.5 с помощью Typeahead.js с использованием двух столбцов таблицы
Нежелательные поля повторно отображаются во время обработки ошибок