Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Основы PHP...

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Открыть новую тему     Написать ответ в эту тему

Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Гениально!  Спасибо!

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 23:18 06-04-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вероятно, Апач все же может вмешаться в буферизацию, даже если использовать
ob_flush();
flush();
 
А если индексную страницу ограничить кодом, извлекающим контент первого экрана, и завершить скриптом
    <script>
        $(document).ready(function() {
            $.ajax(' farther.php?<?SID?>);
        });
    </script>
 
Соответственно, на странице farther.php восстановить сессию и разместить все остальные тяжелые коды.
 
Возможно такое?
Или это нонсенс, кустарщина?

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 12:23 07-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
Возможно такое?
Или это нонсенс, кустарщина?

смысл всего этого? вы тайминги замеряли, какой смысл что то делать ради миллисекунд?

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 12:30 07-04-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тайминги не замерял, но снижение нагрузки на сервер наверняка будет.
 
Да и вообще хотелось понять - возможно так сделать?

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 12:45 07-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
Да и вообще хотелось понять - возможно так сделать?

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

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 22:08 07-04-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
 
В какой-то статье я вычитал, что для отделения парсера от посетителя можно использовать тот факт, что парсеры не читают графику. И там же приводился простой пример того, как при запросе графического файла подсунуть РНР, который и зафиксирует этот факт на сервере.
 
Код был настолько простой, что я даже не стал его записывать, а вот теперь ни код не могу вспомнить, ни статью отыскать.
 
Как это можно сделать?

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 10:12 20-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn
Не всегда, некоторые имитируют все.
 

Цитата:
вот теперь ни код не могу вспомнить

Банально выдать заголовки с content-type файла, выставить данные сессии, как показатель того, что файл показали, после считываем файл через passthru функцию, к примеру.

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 10:18 20-04-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
после считываем файл через passthru функцию, к примеру.
Честно говоря, я этого не понял.
 
Графика выводится через апач и ее следов даже нет в логах, а РНР в этом не участвует - по крайней, на моем хостинге так. И хостер подтвердил, что средствами РНР запрос и вывод графического файла обнаружить невозможно.
 
В .htaccess можно добавить  
AddType application/x-httpd-php .php .htm .html .jpg
но влезть в jpg с кодом РНР я даже не представляю как...
 
(В утраченной статье этого и не было)
 
 
Добавлено:
В .htaccess такая настройка
RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .txt .jpg .css  
 
При этом РНР код, встроенный в файл .txt, нормально исполняется. А вот с css ничего не получается: вот так пытаюсь этот файл на локалке открыть http://control/221.css и в браузере вижу
@charset "utf-8";
/* CSS Document */
<?php
$date = date("j F Y, H:i:s");  
file_put_contents('css.txt', $date);
echo "$date";  
?>
Файл css.txt не создается.
 
Можно включить его в html код страницы
<link rel="stylesheet" type="text/css" href="221.css" />
 
Но файл css.txt все равно не создается.
 
(на локалке обычный Apache и РНР 5.6).

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 11:18 20-04-2022 | Исправлено: Vladsvn, 15:51 20-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
При этом РНР код, встроенный в файл .txt, нормально исполняется. А вот с css ничего не получается

зачем все это? ну будет у вас ссылка на скрипт в картинке, не думаю, что боты это проверяют.
для начала сделайте, чтобы картинка работала так
<img src='URL/script.php'>
 

Цитата:
Файл css.txt не создается

если отображается php код, то он не запускается, конечно же.
 
script.php
 

Код:
<?php
$filename = 'путь_к_картинке.jpg';
header('Content-Type: image/jpeg');
passthru($filename);

и все.. это потом можно добавить определение content-type у файла, если произвольный, стартануть сессию, записать в нее данные, что файл сработал.
 

Цитата:
Можно включить его в html код страницы
<link rel="stylesheet" type="text/css" href="221.css" />

если не сработает через прямой URL, то так и подавно.
 
обработка .htaccess может быть и не включена. плюс зависит от того, как подключен php - к модуль апача mod_php или как CGI.

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 20:28 20-04-2022 | Исправлено: Mavrikii, 20:36 20-04-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
как подключен php - к модуль апача mod_php или как CGI.
Как модуль апача.
 

Цитата:
<img src='URL/script.php'>
На сайте уже есть такой код, только он используется для других целей. Парсеры его не воспринимают за графику. Видимо, им нужно графическое расширение.
 
 
Пытаюсь сделать такую манипуляцию.
 
Делаем ссылку с динамическим адресом для избежания кеширования.
<link rel="stylesheet" type="text/css" href="221.css?345555543" />
 
А в файле .htaccess внутренний редирект на файл script.php. Причем, этот редирект должен быть независимым от динамической части адреса  221.css.
 
Такой редирект я сделать не сумел... Если это вообще возможно сделать, то как?
 
 
 
 
 
 

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 14:00 21-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
Парсеры его не воспринимают за графику

Ну и? Разве не этого добиваетесь? Чтобы у человека код сработал, а у парсера нет.
Никто не смотрит на расширение файла, так как в сети оно роли не играет.
Или говорите, что грузит все равно? Так тогда и картинку будет грузить - проверьте по логам.
В принципе, расширение роли ну вообще не играет никакой.
 

Цитата:
Если это вообще возможно сделать, то как

mod_rewrite: документация, готовые решения, вопросы
 
RewriteEngine  on
RewriteRule    ^/файл\.расширение$  /script.php

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 15:51 21-04-2022 | Исправлено: Mavrikii, 23:46 21-04-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый вечер!
 
RewriteEngine on
RewriteRule ^/121\.jpg$ /script.php [L]
 
К сожалению, не работает...

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 20:32 22-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
К сожалению, не работает...

а так?
RewriteRule ^/?121\.jpg$ /script.php [L]
 
сам script.php запускается, делает что нужно, напрямую?
и, еще раз, обработка этого может быть отключена в .htaccess, как и могут быть какие то правила выше, поэтому не доходит.

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 22:28 22-04-2022 | Исправлено: Mavrikii, 22:29 22-04-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
сам script.php запускается, делает что нужно, напрямую?
Да, запускается. Его код
<?php
$date = date("j F Y, H:i:s");
file_put_contents('30.txt', $date);
?>
 
 В .htaccess нет никаких лишних строк. Испробовал три варианта:
RewriteEngine on
RewriteRule ^/121\.jpg$ /script.php [L]
 
RewriteEngine on
RewriteRule ^/?121\.jpg$ /script.php [L]    
 
RewriteEngine on
RewriteRule ^121\.jpg$ /script.php [L]
 
В логах Апача во всех этих вариантах
127.0.0.1 - - [24/Apr/2022:19:11:53 +0300] "GET /30.html HTTP/1.1" 200 1331
 
********  
 
phpinfo.php показывает
apache2handler  
Loaded Modules:
core mod_win32 mpm_winnt http_core mod_so mod_actions mod_alias mod_allowmethods mod_asis mod_auth_basic mod_authn_core mod_authn_file mod_authz_core mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cgi mod_dir mod_env mod_include mod_info mod_isapi mod_log_config mod_mime mod_negotiation mod_rewrite mod_setenvif mod_socache_shmcb mod_ssl mod_status mod_userdir mod_php5

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 19:22 24-04-2022 | Исправлено: Vladsvn, 19:27 24-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
RewriteEngine on
RewriteRule ^/?121\.jpg$ /script.php [L]

должно работать, значит что то не договариваете или не так делаете.
 
при обращении к /123.jpg будет срабатывать /script.php и не отображаться в адресной строке.

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 22:43 24-04-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
значит что то не договариваете или не так делаете
Можете взглянуть сами:
 
http://fh7929mi.bget.ru/phpinfo.php
 
RewriteEngine on
RewriteRule ^/?121\.jpg$ /script.php [L]
http://fh7929mi.bget.ru/htaccess.jpg
 
Код скрипта я уже приводил выше, его адрес http://fh7929mi.bget.ru/script.php  
Если вызвать скрипт из адресной строки, то он сделает запись времени в текстовый файл http://fh7929mi.bget.ru/30.txt
 
Файл с картинкой http://fh7929mi.bget.ru/30.html
 
Если из адресной строки запустить / обновить файл с картинкой, то при исправной работа должно было бы обновиться время  в текстовом файле http://fh7929mi.bget.ru/30.txt, но этого не происходит...
 
 

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 13:13 26-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn
по 121.jpg выводится картинка. если это делается скриптом - он работает. иначе выводится настоящая картинка, что там есть - она есть?
 
выводится правильно, с правильными content-type и даже размером, о котором я не говорил. а значит это реальная картинка с сервера.

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 20:17 26-04-2022 | Исправлено: Mavrikii, 20:18 26-04-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
по 121.jpg выводится картинка. если это делается скриптом - он работает. иначе выводится настоящая картинка, что там есть - она есть?
 Это обычный HTML файл http://fh7929mi.bget.ru/30.html . С картинкой, выводимой обычным образом. Правой кнопкой мыши это легко увидеть.
 
Код скрипта я уже тоже приводил - он делает совсем другое. Вот он (просто повторяю еще раз тот же самый код)
<?php
$date = date("j F Y, H:i:s");
file_put_contents('30.txt', $date);
?>
 
Если бы работал RewriteRule в .htaccess, то при открытии  30.html срабатывал бы и скрипт, но этого не происходит. Очевидно, что RewriteRule не работает. Что, собственно, и является проблемой, породившей вопрос.
 

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 21:16 26-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
Это обычный HTML файл  

я знаю что это.

Цитата:
Код скрипта я уже тоже приводил - он делает совсем другое

а выводится картинка, значит она где то там есть.
 
https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#rewriterule

Цитата:
Override:    FileInfo

должны быть разрешены для изменения AllowOverride FileInfo в корне или в той папке, иначе не будет обрабатываться правило.
в конфиге апача нужно добавить https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 21:42 26-04-2022 | Исправлено: Mavrikii, 21:44 26-04-2022
destiny child



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
 
<?php
 
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('error_log', '/var/www/logs/php.log');
ini_set('log_errors', 1);
if (PHP_SAPI == 'cli-server') {
    // To help the built-in PHP dev server, check if the request was actually for
    // something which should probably be served as a static file
    $url = parse_url($_SERVER['REQUEST_URI']);
    $file = __DIR__ . $url['path'];
    if (is_file($file)) {
        return false;
    }
}
require __DIR__ . '/vendor/autoload.php';
session_start();
$configDir = dirname(__DIR__) . '/config/';
// Instantiate the app
$settings = require __DIR__ . '/app/settings.php';
$app = new \Slim\App($settings);
// Set up dependencies
$dependencies = require __DIR__ . '/app/dependencies.php';
$dependencies($app);
// Register middleware
$middleware = require __DIR__ . '/app/middleware.php';
$middleware($app);
// Register routes
$routes = require __DIR__ . '/app/routes.php';
$routes($app);
// Run app
$app->run();
 

Есть вот такой файл index.php. В составе сервиса, реализующего телеграм-бота. Типа главный, стартующий.
При каких-то ситуациях он генерит не ответы в бот на запросы пользователя, а зависон и генерацию в отчете вебхука бота:
"last_error_message":"Wrong response from the webhook: 500 Internal Server Error"
КАК искать причину этой ошибки 500? Сразу о плохом - это не моё по идее дело, я не особо плаваю в этой сфере, но типа мне "надо посмотреть". Т.е. хотя бы составить какое-то понятное представление о ситуации со стороны мне надо сделать. По идее суть веб-сервиса, работающего на прослушку текстовых команд от пользователей бота и генерация ответов- эт ясно и понятно. Но вот реализация... Выбрано и сделано чётко и по современному, там что-то в docker'aх, angular'ах навернуто, вместо простейшего апач сервера... Файлов лога нигде никаких нет, по идее в файл '/var/www/logs/php.log' должно было всё сыпаться - но его даже нет. php.ini есть, но никакие изменения в нем не дают ожидаемого результата - будто бы он и не читается, не парсится...
Есть какие-то действенные рекомендации по отлову таких 500х ошибок?
 
P.S. ах да - почему я именно этот файл еще приложил в виде его кода - потому что ту инфу  о 500 ошибке, что я смог все таки выцепить - указывала на ошибку после команды POST на файл именно /index.php
Но вот деталей этого ПОСТа, его параметров, места возникновения 500й ошибки в коде php конкретном - вот этого уже нигде и никак не найду, а очень хочется...

Всего записей: 3305 | Зарегистр. 01-04-2006 | Отправлено: 20:41 29-04-2022 | Исправлено: destiny child, 20:18 02-05-2022
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Компьютерный форум Ru.Board » Интернет » Web-программирование » Основы PHP...


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru