{"id":333581,"date":"2022-05-24T15:01:16","date_gmt":"2022-05-24T15:01:16","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=333581"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=333581","title":{"rendered":"<span>\u0423\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0437\u0430 \u0441\u0447\u0451\u0442 \u0441\u0436\u0430\u0442\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Laravel<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041a\u0430\u043a \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u0441\u0430\u0439\u0442\u0443 \u0432 200 \u0440\u0430\u0437? \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u0442\u0430\u043a\u043e\u0435? \u0418\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 &#171;\u043d\u0430 \u043b\u0435\u0442\u0443&#187; \u0438 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0435\u0433\u043e \u043c\u0438\u043d\u0443\u0441\u043e\u0432.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043d\u0430\u0431\u0436\u0435\u043d \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c, \u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432\u0441\u0435\u0445 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0442\u0430\u043a\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443. \u0422\u0438\u043f\u0438\u0447\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u0442\u0440\u0430\u0444\u0438\u043a\u0430 &#8212; \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u0435\u0432\u044c\u044e\u0448\u043a\u0438. \u0418\u0445 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043d\u0430 \u0441\u0430\u0439\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 &#171;\u043f\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0443&#187;. \u0412\u0430\u0440\u0438\u0430\u043d\u0442, \u0441 \u0440\u0443\u0447\u043d\u044b\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u0435\u0432\u044c\u044e\u0448\u0435\u043a \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0442\u0440\u0443\u0434\u043e\u0451\u043c\u043a\u0438\u0439 \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0441\u0430\u0439\u0442\u0430 \ud83d\ude42<\/p>\n<h2>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u0432\u044c\u044e\u0448\u0435\u043a \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/h2>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u0431\u043e\u0440\u0430 \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u044b\u0445 \u043d\u0430 \u0432\u0441\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0436\u0438\u0437\u043d\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u044f\u043c\u043e \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u043e\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u0435 \u043d\u0430 \u0441\u0430\u0439\u0442 \u0444\u043e\u0442\u043e.<\/p>\n<p>\u0412 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0431\u0430\u043d\u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0441 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043e\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u0440\u0435\u0447\u044c \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u0435\u0439 \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u043a\u0430\u0447\u0430\u0442\u044c &#171;\u043b\u0438\u0448\u043d\u0438\u0435&#187; \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u044b, \u043b\u0438\u0431\u043e \u0437\u0430\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 404. \u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0443\u0441\u0443\u0433\u0443\u0431\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438 frontend- \u0438 backend- \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u0430\u0448 api-\u043f\u0440\u043e\u0435\u043a\u0442, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0431\u0430\u043d\u043a\u043e\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438, \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0432\u044b\u0442\u0435\u043a\u0430\u044e\u0449\u0438\u043c\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u0439 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0423 \u0432\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f \u0434\u0438\u0437\u0430\u0439\u043d \u0441\u0430\u0439\u0442\u0430 \u0438\u043b\u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0441\u043e\u0431\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u0435\u0432\u044c\u044e\u0448\u0435\u043a \u0438 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0434\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0432 \u0432\u0430\u0448\u0435\u0439 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u0438 \u043f\u0440\u043e\u0434\u0435\u043b\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u0441 \u0443\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438.<\/p>\n<p>\u041a \u043f\u043b\u044e\u0441\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043d\u0435\u0441\u0442\u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0437\u0430\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b. <\/p>\n<h3>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u0432\u044c\u044e\u0448\u0435\u043a &#171;\u043d\u0430 \u043b\u0435\u0442\u0443&#187;<\/h3>\n<p>\u0414\u043b\u044f \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0439 &#171;\u043f\u043e\u0434\u0433\u043e\u043d\u043a\u0438&#187; \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0433 \u0431\u044b\u0442\u044c \u0437\u0430\u043a\u0430\u0437\u0430\u043d \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 URL \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u041d\u043e \u0435\u0441\u043b\u0438 \u0444\u0430\u0439\u043b\u0430 \u043f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443 \u043d\u0435\u0442 &#8212; \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f 404 \u043e\u0448\u0438\u0431\u043a\u0430. \u041f\u043e\u0442\u043e\u043c\u0443 \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a 404 \u043e\u0448\u0438\u0431\u043a\u0438, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u0435\u0432\u044c\u044e\u0448\u043a\u0443. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0435\u0441\u043b\u0438 \u043f\u043e \u0441\u0430\u043c\u043e\u043c\u0443 URL \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u0430\u043a\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0433\u0435\u043d\u0435\u0440\u0438\u0442\u044c \u0438 \u0432 \u043a\u0430\u043a\u043e\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u0435. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043c\u0435\u0441\u0442\u043e 404 \u043e\u0448\u0438\u0431\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0430 \u0441\u0430\u043c\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9c4\/08e\/a88\/9c408ea88821aa41e2520db2f765a51b.png\" alt=\"\u041c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 &quot;\u043d\u0430 \u043b\u0435\u0442\u0443&quot; \u043f\u043e \u0434\u0430\u043d\u043d\u044b\u043c \u0438\u0437 URL\" title=\"\u041c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 &quot;\u043d\u0430 \u043b\u0435\u0442\u0443&quot; \u043f\u043e \u0434\u0430\u043d\u043d\u044b\u043c \u0438\u0437 URL\" width=\"794\" height=\"280\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9c4\/08e\/a88\/9c408ea88821aa41e2520db2f765a51b.png\"\/><figcaption>\u041c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 &#171;\u043d\u0430 \u043b\u0435\u0442\u0443&#187; \u043f\u043e \u0434\u0430\u043d\u043d\u044b\u043c \u0438\u0437 URL<\/figcaption><\/figure>\n<p>\u041a \u043c\u0438\u043d\u0443\u0441\u0430\u043c \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0442\u043d\u0435\u0441\u0442\u0438 \u0432\u044b\u0441\u043e\u043a\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u043d\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u041f\u0440\u0438\u0447\u0451\u043c &#8212; \u044d\u0442\u043e \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0431\u0443\u0434\u0443\u0442 \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0432 \u0442\u0435\u0445 \u0436\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0445 \u0447\u0442\u043e \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0440\u0430\u043d\u0435\u0435.<\/p>\n<h2>\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441\u0438\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u043e\u0440\u043e\u043d \u043e\u0431\u0435\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439<\/h2>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u043e\u0434\u0435\u043b\u044b\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0438\u0434\u0435\u044f. \u0418\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0442\u044c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u043e\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0430 \u0434\u0430\u043b\u0435\u0435 \u043e\u043d\u0438 \u0431\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b\u0438\u0441\u044c \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0444\u0430\u0439\u043b\u044b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0435\u0433\u043e \u0432\u043c\u0435\u0441\u0442\u043e 404-\u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u043e \u0435\u0449\u0451 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0430 \u0434\u0438\u0441\u043a \u043f\u043e\u0434 \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u044b\u043c \u0432 URL \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 URL <code>https:\/\/example.com\/storage\/product\/[width_100]\/2.jpg<\/code> \u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043f\u0430\u043f\u043a\u0430 <code>[width_100]<\/code>\u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e, \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c <code>2.jpg<\/code>  \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f  \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0432\u044c\u044e\u0448\u043a\u0438 \u043f\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u0443. \u041f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a 404 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u0430\u0439\u043b. \u0422\u0430\u043a \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u043e\u0433\u043d\u0430\u043d\u043d\u044b\u0439 \u0431\u0430\u043d\u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439.<\/p>\n<h2>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 Laravel<\/h2>\n<ul>\n<li>\n<p>\u041f\u043e\u0442\u0440\u0435\u0431\u0443\u0442\u0441\u044f \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0438\u043b\u0438 \u0432\u043d\u043e\u0432\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 Laravel. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 <a href=\"https:\/\/github.com\/andrewinc\/scaled-image\" rel=\"noopener noreferrer nofollow\">Laravel Framework 8.83.12<\/a>.<\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0432 PHP \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 GD.<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0430\u0447\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0441 blade-\u0448\u0430\u0431\u043b\u043e\u043d\u0430 <a href=\"https:\/\/github.com\/andrewinc\/scaled-image\/blob\/master\/resources\/views\/index.blade.php#L39\" rel=\"noopener noreferrer nofollow\">resources\/views\/index.blade.php<\/a>:<\/p>\n<pre><code class=\"php\">&lt;ol>   @foreach($files as $file)   &lt;li>&lt;a href=\"\/card\/{{$file}}\">       @php         $src   = '\/storage\/product\/'.$file;       @endphp       &lt;img src=\"{{$src}}\" width=\"60\" alt=\"\"\/> {{$src}}     &lt;\/a>   &lt;\/li>   @endforeach &lt;\/ol><\/code><\/pre>\n<p>\u041f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f <a href=\"https:\/\/github.com\/andrewinc\/scaled-image\/blob\/master\/app\/Http\/Controllers\/ScaledImage404Controller.php\" rel=\"noopener noreferrer nofollow\">PHP-\u043a\u043b\u0430\u0441\u0441<\/a> \u0434\u043b\u044f \u043d\u0430\u0431\u043e\u0440\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432:<\/p>\n<pre><code class=\"bash\">php artisan make:controller ScaledImage404Controller<\/code><\/pre>\n<p>\u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432 \u043d\u0451\u043c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a \u043f\u0430\u043f\u043a\u0435 \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f\u043c\u0438 \u0442\u043e\u0432\u0430\u0440\u043e\u0432 \u043b\u0438\u0431\u043e \u043f\u0443\u0442\u044c \u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443.<\/p>\n<pre><code class=\"php\">\/**  * @param string $fname \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 (\u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u0435\u043d \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443)                         Ex.: '0.jpg' \u043f\u043e \u0443\u043c\u043e\u043b\u0447 \u043f\u0443\u0441\u0442.\u0441\u0442\u0440\u043e\u043a\u0430  * @return string Ex.: '\/home\/andrew\/project\/shop\/public\/storage\/product\/' *\/ public static function fsPath($fname='') {     return public_path(\"storage\/product\/{$fname}\"); }<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0432 <a href=\"https:\/\/github.com\/andrewinc\/scaled-image\/blob\/master\/routes\/web.php#L19\" rel=\"noopener noreferrer nofollow\">routes\/web.php<\/a>:<\/p>\n<pre><code class=\"php\">use App\\Http\\Controllers\\ScaledImage404Controller;  \/\/\u0441\u043f\u0438\u0441\u043e\u043a Route::get('\/', function () {     \/\/return view('welcome');     $files=[]; \/\/['0.jpg', '1.jpg', '2.jpg',...];     foreach(scandir(ScaledImage404Controller::fsPath()) as $f) {         if ( ('.' != $f{0}) &amp;&amp;               (!is_dir(ScaledImage404Controller::fsPath($f)))           ) $files[] = $f;     }     return view('index', ['files'=>$files]); });<\/code><\/pre>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0435\u043c\u0441\u044f <code>php artisan serve <\/code>\u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u0435\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0438\u0437 \u043f\u0430\u043f\u043a\u0438 <code>public\/storage\/product\/<\/code>  <br \/>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/87b\/545\/1d3\/87b5451d3a7aa6327f593227dc40c56a.png\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u0443\u0432\u0438\u0434\u0438\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0442\u043a\u0440\u044b\u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u0432\u0430\u0440\u043e\u0432\" title=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u0443\u0432\u0438\u0434\u0438\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0442\u043a\u0440\u044b\u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u0432\u0430\u0440\u043e\u0432\" width=\"243\" height=\"262\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/87b\/545\/1d3\/87b5451d3a7aa6327f593227dc40c56a.png\"\/><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u0443\u0432\u0438\u0434\u0438\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0442\u043a\u0440\u044b\u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u0432\u0430\u0440\u043e\u0432<\/figcaption><\/figure>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0412 <a href=\"https:\/\/github.com\/andrewinc\/scaled-image\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0447\u0442\u043e \u044f \u043f\u0440\u0438\u043b\u0430\u0433\u0430\u044e<\/a> &#8212; <a href=\"https:\/\/github.com\/andrewinc\/scaled-image\/tree\/master\/public\/storage\/product\" rel=\"noopener noreferrer nofollow\">29 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u044b\u043c \u043e\u0431\u044a\u0451\u043c\u043e\u043c 20\u041c\u0431<\/a>. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u0436\u0430\u0442\u044c \u044d\u0442\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u0448\u0438\u0440\u0438\u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0431\u044b\u043b\u0430 100 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439, \u0430 \u0432\u044b\u0441\u043e\u0442\u0430 \u0442\u0430\u043a\u043e\u0439 \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u043f\u043e\u0441\u0442\u0440\u0430\u0434\u0430\u043b\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438. \u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u044b\u0439 \u043e\u0431\u044a\u0451\u043c \u044d\u0442\u0438\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u0442 90\u041a\u0431.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 404-\u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 URL \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c:<\/p>\n<ol>\n<li>\n<p>\u0417\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043b\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 .git .png .jpg (\u0438\u043b\u0438 .jpeg)?<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u0438 URL \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443 (\u043a\u043e\u043c\u0430\u043d\u0434\u0443) \u0434\u043b\u044f \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438?<\/p>\n<\/li>\n<li>\n<p>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u0438 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438?<\/p>\n<\/li>\n<\/ol>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0451 \u0442\u0430\u043a \u0438 \u0435\u0441\u0442\u044c &#8212;  \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443 (\u043a\u043e\u043c\u0430\u043d\u0434\u0443) \u0435\u0441\u043b\u0438 \u0435\u0451 \u043d\u0435\u0442 \u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c:<\/p>\n<ol>\n<li>\n<p>\u0438\u043c\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0442\u0438\u043f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f (gif, png \u0438\u043b\u0438 jpeg) \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0432 &#171;Content-type: image\/$type&#187;;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0440\u0435\u0441\u0430\u0439\u0437\u0430 \u0442\u0438\u043f\u0430  <code>\/[width_100]\/<\/code>;<\/p>\n<\/li>\n<\/ol>\n<p>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0441 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u0432 <a href=\"https:\/\/github.com\/andrewinc\/scaled-image\/blob\/master\/app\/Http\/Controllers\/ScaledImage404Controller.php\" rel=\"noopener noreferrer nofollow\">ScaledImage404Controller<\/a>:<\/p>\n<pre><code class=\"php\">const R = '\/\\\/(\\[width_\\d+\\])\\\/\/';      \/** \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u0430\u0441\u0448\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0438 \u043c\u0435\u0441\u0442\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f      (\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u043f\u0430\u043f\u043a\u0430 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f)  * @param string $uri Ex.: '\/storage\/product\/[width_100]\/2.jpg'  * @return array|boolean false \u0435\u0441\u043b\u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f resize \u0438\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0430; \u043c\u0430\u0441\u0441\u0438\u0432 \u0441     \u043e\u0441\u043d. \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0440\u0435\u0441\u0430\u0439\u0437\u0430 Ex.: ['outsize'=>'[width_100]', 'type'=>'jpeg',       'src'=>\"\/home\/andrew\/project\/shop\/public\/storage\/product\/2.jpg\",       'dest'=>\"\/home\/andrew\/project\/shop\/public\/storage\/product\/[width_100]\/2.jpg\"]  *\/ public static function outsizeArr($uri) {     \/\/ \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442?     $typeImage = static::imageFileTypeFromExt($uri); \/\/ 'png' | false     if (false === $typeImage) return false;      \/\/\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0440\u0435\u0441\u0430\u0439\u0437\u0430?     $needResize=preg_match(static::R, $uri, $m);\/\/$m=[\"\/[width_100]\/\", \"[width_100]\"]     if (!$needResize) return false;     $outsize = $m[1]; \/\/ '[width_300]'      \/\/ \u0443\u0431\u0440\u0430\u0442\u044c outsize \u0438\u0437 $url     $URI = str_replace($m[0], '\/', $uri);  \/\/ '\/storage\/product\/2.jpg'      $startsWith = Str::of($URI)->startsWith($storage_uri = '\/storage'); \/\/ true     if (!$startsWith) return false;      $file = static::uriToPath($URI); \/\/ '\/home\/...\/public\/storage\/product\/2.jpg'     if (!file_exists($file)) return false;      \/\/\u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430     $name = basename($file); \/\/'2.jpg'      \/\/\u043f\u0443\u0442\u044c \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 (\u0431\u0435\u0437 \u0438\u043c\u0435\u043d\u0438)     $pathToCreate = static::uriToPath(substr($uri, 0,-1*strlen($name)));      \/\/ '\/home\/...\/public\/storage\/product\/[width_100]\/2.jpg'      \/\/\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043f\u0443\u0442\u044c \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 \u0435\u0441\u043b\u0438 \u0435\u0433\u043e \u0435\u0449\u0451 \u043d\u0435\u0442. \u043f\u0440\u0438 \u043d\u0435\u0443\u0434\u0430\u0447\u0435 - \u0432\u044b\u0439\u0442\u0438     if (       !file_exists($pathToCreate) &amp;&amp; !mkdir($pathToCreate, 0777, true)     ) return false;      return [       'outsize'=>$outsize,       'type'=>$typeImage,       'src'=>$file,       'dest'=>$pathToCreate.$name     ]; }  \/** \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c mime-\u0442\u0438\u043f \u0444\u0430\u0439\u043b\u0430-\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f ('Content-type: image\/'...)     \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430-\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f  * @param string \u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430\\URI \u0438 \u0442.\u043f. Ex.1: '1.png' Ex.2: '\/storage\/product\/10.jpg'  * @return string|boolean \u0442\u0438\u043f  Ex.: 'png' \u0438\u043b\u0438 false \u0435\u0441\u043b\u0438 \u0444\u0430\u0439\u043b            \u043d\u0435 \u0438\u0437 '*.gif', '*.jpeg', '*.jpg', '*.png' *\/ public static function imageFileTypeFromExt($filename) {     $ext = strtolower(fileext($filename));     if ($ext==\".jpg\") $ext = '.jpeg';     if (in_array($ext, ['.gif', '.jpeg', '.png'])) return substr($ext, 1);     else return false; }  \/**  * @param string $uri Ex.: '\/storage\/product\/2.jpg'  * @return string Ex.: '\/home\/andrew\/project\/shop\/public\/storage\/product\/2.jpg' *\/ public static function uriToPath($uri='') {     return public_path($uri); }<\/code><\/pre>\n<p>\u0438 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f (\u0432 \u043d\u0451\u043c-\u0436\u0435):<\/p>\n<pre><code class=\"php\">\/** \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430 (\u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0442\u043e\u0447\u043a\u0443)  * @param string $filename \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0441 \u043f\u043e\u043b\u043d\u044b\u043c \u043f\u0443\u0442\u0451\u043c \u0438\u043b\u0438 \u0431\u0435\u0437 \u043d\u0435\u0433\u043e  * @return string \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0442\u043e\u0447\u043a\u0443                   \u0438\u043b\u0438 \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f  * Ex.1: fileext('script.js');\/\/'.js'  * Ex.2: fileext('www\/.htaccess');\/\/'.htaccess'  * Ex.2: fileext('www\/README');\/\/'' *\/ function fileext($filename){     $ext='';     $filename=basename($filename); \/\/ \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043c\u044f     if (($pos=strrpos($filename, '.'))!==false) $ext=substr($filename, $pos);     return $ext; }<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 <code>ScaledImage404Controller::outsizeArr<\/code> \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 (\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435) \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 404 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 <a href=\"https:\/\/github.com\/andrewinc\/scaled-image\/blob\/master\/app\/Exceptions\/Handler.php#L44\" rel=\"noopener noreferrer nofollow\">app\/Exceptions\/Handler.php<\/a>. \u0412 \u043c\u0435\u0442\u043e\u0434 <code>register()<\/code>\u0434\u043e\u0431\u0430\u0432\u0438\u043c:<\/p>\n<pre><code class=\"php\">$this->renderable(function (NotFoundHttpException $e, $request) {     if (       is_array($a = ScaledImage404Controller::outsizeArr(\"\/\".$request->path()))       &amp;&amp;       ($imSrc = ScaledImage404Controller::getImage($a['src']))       &amp;&amp;       ($im = ScaledImage404Controller::imageResize(         $imSrc,          $a['outsize'],         $a['type']       ))     ) {         $type = $a['type'];         ob_start();         switch($type) {             case 'gif':                 imagegif($im);                 imagegif($im, $a['dest']);                 break;             case 'png':                 imagepng($im);                 imagepng($im, $a['dest']);                 break;             default:                 imagejpeg($im);                 imagejpeg($im, $a['dest']);         }         $buffer = ob_get_contents();         ob_end_clean();         imagedestroy($im);         return response($buffer, 200)->header('Content-type', 'image\/'.$type);     } });<\/code><\/pre>\n<p>\u041e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0434\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 <code>ScaledImage404Controller::getImage <\/code>\u0438  <code>ScaledImage404Controller::imageResize<\/code>: <\/p>\n<pre><code>\/** \u0421\u043e\u0437\u0434. img \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430 *\/ public static function getImage($filename) {     $img = false;     \/\/\u0443\u0433\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0442\u0438\u043f \u043f\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044e     $type = static::imageFileTypeFromExt($filename);     switch ($type) {         case 'png':$img = @imagecreatefrompng($filename); break;         case 'gif':$img = @imagecreatefromgif($filename); break;         case 'jpeg':$img = @imagecreatefromjpeg($filename);break;     }     \/\/\u043d\u0435 \u0443\u0433\u0430\u0434\u0430\u043b\u0438 - \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0432\u0441\u0451 \u043f\u043e\u0434\u0440\u044f\u0434     if (false === $img){         $img = @imagecreatefromgif($filename);         if (false !== $img) return $img;         $img = @imagecreatefrompng($filename);         if (false !== $img) return $img;         $img = @imagecreatefromjpeg($filename);         if (false !== $img) return $img;     }      \/\/\u0435\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c - \u0432\u0435\u0440\u043d\u0443\u0442\u044c false     return $img; }  \/** \u0420\u0435\u0441\u0430\u0439\u0437 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0439  * @param resource $im  gd image  * @param string $outsize \u0421\u0442\u0440\u043e\u043a\u0430 \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0440\u0435\u0441\u0430\u0439\u0437\u0430 Ex.: \"[width_200]\"  * @param string $type \u041e\u0434\u0438\u043d \u0438\u0437 \u0442\u0438\u043f\u043e\u0432 'jpeg'|'png'|'gif'                        \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0432 \"Content-type: image\/{$type}\"  * @return boolean|resource False - \u0435\u0441\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0430 \u0438\u043b\u0438                              gd image \u0435\u0441\u043b\u0438 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c *\/ public static function imageResize($im, $outsize, $type) {     $old_w= imagesx($im);     $old_h= imagesy($im);     $new_w = $old_w;     $new_h = $old_h;      if (preg_match('\/\\[.*_(.+)\\]\/', $outsize, $m)) {          \/\/ \"[width_200]\" => $m = [\"[width_200]\", '200']         $new_w = intval($m[1]);         $new_h = round(($new_w\/$old_w) * $old_h); \/\/ k*old_h - \u0440\u0430\u0441\u0447\u0451\u0442 \u043d\u043e\u0432. \u0432\u044b\u0441\u043e\u0442\u044b     }      \/\/\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441 \u043d\u043e\u0432\u044b\u043c\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c\u0438 (\u0435\u0433\u043e \u0438 \u0431\u0443\u0434\u0435\u043c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c)     $image = imagecreatetruecolor($new_w, $new_h);      \/\/ \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0430\u043b\u044c\u0444\u0430-\u043a\u0430\u043d\u0430\u043b\u0430 (\u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0445 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c)     if (in_array($type, ['png', 'gif'])) {         imagesavealpha($image, true);         $trans_colour = imagecolorallocatealpha($image, 0, 0, 0, 127);         imagefilledrectangle(           $image, 0, 0, imagesx($image), imagesy($image), $trans_colour         );         imagealphablending($image, false);     }      \/\/ \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 (\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u043d\u0438\u0435\u043c\\\u0441\u0436\u0430\u0442\u0438\u0435\u043c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438)     \/\/ \u0438 \u0443\u0431\u0438\u0432\u0430\u043d\u0438\u0435 \u0431\u043e\u043b\u0435\u0435 \u043d\u0435\u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430     if (imagecopyresampled($image, $im, 0, 0, 0, 0, $new_w, $new_h, $old_w, $old_h)) {         imagedestroy($im);     } else {         Log::warning('[ScaledImage404Controller]::imageResize Picture not copied');         imagedestroy($image);         $image = $im;     }      return $image; }<\/code><\/pre>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430 \u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c <a href=\"https:\/\/github.com\/andrewinc\/scaled-image\/blob\/master\/resources\/views\/index.blade.php#L41\" rel=\"noopener noreferrer nofollow\">index.blade.php<\/a><\/p>\n<pre><code class=\"php\">@foreach($files as $file) &lt;li>&lt;a href=\"\/card\/{{$file}}\">         @php             $src   = '\/storage\/product\/'.$file;             $scaled= '\/storage\/product\/[width_100]\/'.$file;         @endphp         &lt;img src=\"{{$scaled}}\" width=\"60\" alt=\"\"\/> {{$src}}     &lt;\/a> &lt;\/li> @endforeach<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0447\u0442\u043e \u0438 \u0432\u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043f\u0440\u043e\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 87 \u041a\u0431 \u0432\u043c\u0435\u0441\u0442\u043e 20\u041c\u0431. \u041f\u0440\u0430\u0432\u0434\u0430 \u043f\u0435\u0440\u0432\u043e\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u043c\u0435\u0441\u0442\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 1.82 \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0443\u0436\u0435 4.02 \u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u043d\u043e \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0438\u0434\u0451\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u0435\u0432\u044c\u044e\u0448\u0435\u043a. \u0410 \u0434\u0430\u043b\u0435\u0435 &#8212; \u0442\u0435 \u0436\u0435 87 \u041a\u0431 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0443\u0436\u0435 \u0437\u0430 0.718 \u0441\u0435\u043a\u0443\u043d\u0434\u044b.<\/p>\n<details class=\"spoiler\">\n<summary>\u0412 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u0435 \u0441\u043a\u0440\u0438\u043d\u044b \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438<\/summary>\n<div class=\"spoiler__content\">\n<h2>\u0421\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439<\/h2>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b7c\/4bd\/826\/b7c4bd8260548864d652e937c573fc2d.png\" alt=\"29 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a (+favicon) 20\u041c\u0431 \u0437\u0430 1.82 \u0441\u0435\u043a\" title=\"29 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a (+favicon) 20\u041c\u0431 \u0437\u0430 1.82 \u0441\u0435\u043a\" width=\"1277\" height=\"921\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b7c\/4bd\/826\/b7c4bd8260548864d652e937c573fc2d.png\"\/><figcaption>29 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a (+favicon) 20\u041c\u0431 \u0437\u0430 1.82 \u0441\u0435\u043a<\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/28f\/a9d\/bfb\/28fa9dbfb0ecb105ba28aed8a16d44fb.png\" alt=\"\u041f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0441 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438 29 (+favicon) 88\u041a\u0431 \u0437\u0430 4 \u0441\u0435\u043a\" title=\"\u041f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0441 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438 29 (+favicon) 88\u041a\u0431 \u0437\u0430 4 \u0441\u0435\u043a\" width=\"1274\" height=\"924\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/28f\/a9d\/bfb\/28fa9dbfb0ecb105ba28aed8a16d44fb.png\"\/><figcaption>\u041f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0441 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438 29 (+favicon) 88\u041a\u0431 \u0437\u0430 4 \u0441\u0435\u043a<\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0f1\/3ca\/6be\/0f13ca6be230757e45cbadac1f97283f.png\" alt=\"\u041f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438 29 (+favicon) \u0442\u0435 \u0436\u0435 88\u041a\u0431 \u0437\u0430 0.7 \u0441\u0435\u043a\" title=\"\u041f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438 29 (+favicon) \u0442\u0435 \u0436\u0435 88\u041a\u0431 \u0437\u0430 0.7 \u0441\u0435\u043a\" width=\"1274\" height=\"921\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0f1\/3ca\/6be\/0f13ca6be230757e45cbadac1f97283f.png\"\/><figcaption>\u041f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438 29 (+favicon) \u0442\u0435 \u0436\u0435 88\u041a\u0431 \u0437\u0430 0.7 \u0441\u0435\u043a<\/figcaption><\/figure>\n<h2>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/h2>\n<p>\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 <a href=\"https:\/\/github.com\/andrewinc\/scaled-image\/blob\/master\/public\/storage\/product\/0.jpg\" rel=\"noopener noreferrer nofollow\">\u0444\u043e\u0442\u043e <strong>0.jpg<\/strong> \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 (2400&#215;1600 888\u041a\u0431)<\/a> \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u043d\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c2a\/200\/db9\/c2a200db93c62bb95589ba3cf7524744.png\" alt=\"\u041f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a: 742 \u043c\u0441 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0447\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0444\u043e\u0442\u043e \u0448\u0438\u0440\u0438\u043d\u043e\u0439 100\u043f\u0438\u043a\u0441 \u0432\u043c\u0435\u0441\u0442\u043e 2400\u043f\u0438\u043a\u0441.\" title=\"\u041f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a: 742 \u043c\u0441 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0447\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0444\u043e\u0442\u043e \u0448\u0438\u0440\u0438\u043d\u043e\u0439 100\u043f\u0438\u043a\u0441 \u0432\u043c\u0435\u0441\u0442\u043e 2400\u043f\u0438\u043a\u0441.\" width=\"740\" height=\"229\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c2a\/200\/db9\/c2a200db93c62bb95589ba3cf7524744.png\"\/><figcaption>\u041f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a: 742 \u043c\u0441 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0447\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0444\u043e\u0442\u043e \u0448\u0438\u0440\u0438\u043d\u043e\u0439 100\u043f\u0438\u043a\u0441 \u0432\u043c\u0435\u0441\u0442\u043e 2400\u043f\u0438\u043a\u0441.<\/figcaption><\/figure>\n<p>\u0423\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0437\u0430 \u0441\u0447\u0451\u0442 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0442\u0430\u043a\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043f\u043e\u0442\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c81\/bb1\/fee\/c81bb1fee4bacf349361629124d49802.png\" alt=\"\u041f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0437\u0430\u043f\u0443\u0441\u043a: \u0432\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u043d\u0435\u0431\u0440\u0435\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0430\u043b\u043e. \u041d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441 \u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u0435\u0440\u043d\u0443\u043b \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u0430\u0439\u043b.\" title=\"\u041f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0437\u0430\u043f\u0443\u0441\u043a: \u0432\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u043d\u0435\u0431\u0440\u0435\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0430\u043b\u043e. \u041d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441 \u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u0435\u0440\u043d\u0443\u043b \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u0430\u0439\u043b.\" width=\"736\" height=\"228\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c81\/bb1\/fee\/c81bb1fee4bacf349361629124d49802.png\"\/><figcaption>\u041f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0437\u0430\u043f\u0443\u0441\u043a: \u0432\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u043d\u0435\u0431\u0440\u0435\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0430\u043b\u043e. \u041d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441 \u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u0435\u0440\u043d\u0443\u043b \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u0430\u0439\u043b.<\/figcaption><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<h2>\u0427\u0442\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c?<\/h2>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f &#8212; \u0442\u0440\u0430\u0444\u0438\u043a \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d \u0432 200 \u0440\u0430\u0437 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u043f\u0440\u043e\u043a\u0430\u0447\u043a\u043e\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0439, \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0430 \u0432 2.5 \u0440\u0430\u0437\u0430 (\u043f\u0440\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435, \u0442.\u043a. \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441 localhost). \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0431\u043e\u0442\u0438\u0442\u044c\u0441\u044f \u043e \u0431\u0430\u043d\u043a\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0441 \u043f\u0440\u0435\u0432\u044c\u044e\u0448\u043a\u0430\u043c\u0438. \u041d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u043e \u0441\u0443\u0442\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u044d\u0448\u0430 \u0438\u0437 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a.<\/p>\n<p>\u0418\u0437 \u043c\u0438\u043d\u0443\u0441\u043e\u0432: \u0438\u0437-\u0437\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u043f\u0435\u0440\u0432\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0433\u043e (\u0432 2 \u0440\u0430\u0437\u0430 \u0434\u043e\u043b\u044c\u0448\u0435 \u0447\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0444\u043e\u0442\u043e). \u0412\u0442\u043e\u0440\u043e\u0439 \u043c\u0438\u043d\u0443\u0441 &#8212; \u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u0439\u0442\u0438\u0441\u044c \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0441\u0442\u0430\u0432\u044f\u0442 \u0432\u0430\u0448 \u0441\u0430\u0439\u0442 \u043d\u0430\u0447\u0430\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0438\u0442\u044c \u043c\u0430\u0441\u0441\u0443 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438 \u0442\u0435\u043c \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442 \u0432\u0430\u0448 \u0434\u0438\u0441\u043a\u043e\u0432\u044b\u0439 \u043b\u0438\u043c\u0438\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0434\u0430 \u0438 \u0441\u043e\u0437\u0434\u0430\u0434\u0443\u0442 \u043b\u0438\u0448\u043d\u044e\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443. \u0420\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442<\/p>\n<ul>\n<li>\n<p>\u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0431\u0440\u0443\u0442\u0444\u043e\u0440\u0441-\u0430\u0442\u0430\u043a.<\/p>\n<\/li>\n<li>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 Referer \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 404 \u043e\u0448\u0438\u0431\u043a\u0438 (\u0447\u0442\u043e\u0431\u044b \u0442\u0430\u043c \u0431\u044b\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u0430\u0448\u0438\u0445 \u0441\u0430\u0439\u0442\u043e\u0432).<\/p>\n<\/li>\n<li>\n<p>\u0412 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a 404 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0442\u043e\u0438\u0442 \u0432\u043d\u0435\u0441\u0442\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0440\u0430\u0437\u0443\u043c\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u043c\u0430\u0441\u0448\u0442\u0430\u0431, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0442\u044c \u0441\u043e\u0437\u0432\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0441\u0432\u044b\u0448\u0435 500 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0432 \u0448\u0438\u0440\u0438\u043d\u0443 &#8212; \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044f \u043f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0444\u043e\u0442\u043e.<\/p>\n<\/li>\n<li>\n<p>\u041c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0448\u0430\u0433 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0444\u043e\u0442\u043e \u0441 \u0448\u0438\u0440\u0438\u043d\u043e\u0439 70, 80, 90 \u0438 100 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u043d\u043e \u043d\u0435\u043b\u044c\u0437\u044f 88 \u0438\u043b\u0438 91 \u043f\u0438\u043a\u0441\u0435\u043b\u044c &#8212; \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0443\u044e \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0432\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u043e\u0439  (\u044d\u0442\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u0438\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a 404 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043d\u0438\u0437\u0438\u0442 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u0433\u043e\u043d\u043a\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0432\u044c\u044e\u0448\u0435\u043a).<\/p>\n<\/li>\n<\/ul>\n<h2>\u0412\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/h2>\n<p>\u0412 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043d\u0435 \u0431\u044b\u0432\u0430\u0435\u0442 &#8212; \u0431\u044b\u0432\u0430\u044e\u0442 \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0435 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435. <\/p>\n<p>\u0410\u0432\u0442\u043e\u0440\u0443 \u0441\u0442\u0430\u0442\u044c\u0438 \u0443\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u0438\u0434\u0435\u044e \u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 GD \u0438 Laravel. \u041f\u043e\u0442\u043e\u043c\u0443 \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0435\u043d\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u0435\u0451 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044e, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043c\u0443-\u0442\u043e \u043e\u043d\u0430 \u0442\u043e\u0436\u0435 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/666542\/\"> https:\/\/habr.com\/ru\/post\/666542\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041a\u0430\u043a \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u0441\u0430\u0439\u0442\u0443 \u0432 200 \u0440\u0430\u0437? \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u0442\u0430\u043a\u043e\u0435? \u0418\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 &#171;\u043d\u0430 \u043b\u0435\u0442\u0443&#187; \u0438 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0435\u0433\u043e \u043c\u0438\u043d\u0443\u0441\u043e\u0432.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043d\u0430\u0431\u0436\u0435\u043d \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c, \u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432\u0441\u0435\u0445 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0442\u0430\u043a\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443. \u0422\u0438\u043f\u0438\u0447\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u0442\u0440\u0430\u0444\u0438\u043a\u0430 &#8212; \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u0435\u0432\u044c\u044e\u0448\u043a\u0438. \u0418\u0445 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043d\u0430 \u0441\u0430\u0439\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 &#171;\u043f\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0443&#187;. \u0412\u0430\u0440\u0438\u0430\u043d\u0442, \u0441 \u0440\u0443\u0447\u043d\u044b\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u0435\u0432\u044c\u044e\u0448\u0435\u043a \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0442\u0440\u0443\u0434\u043e\u0451\u043c\u043a\u0438\u0439 \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0441\u0430\u0439\u0442\u0430 \ud83d\ude42<\/p>\n<h2>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u0432\u044c\u044e\u0448\u0435\u043a \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/h2>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u0431\u043e\u0440\u0430 \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u044b\u0445 \u043d\u0430 \u0432\u0441\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0436\u0438\u0437\u043d\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u044f\u043c\u043e \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u043e\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u0435 \u043d\u0430 \u0441\u0430\u0439\u0442 \u0444\u043e\u0442\u043e.<\/p>\n<p>\u0412 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0431\u0430\u043d\u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0441 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043e\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u0440\u0435\u0447\u044c \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u0435\u0439 \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u043a\u0430\u0447\u0430\u0442\u044c &#171;\u043b\u0438\u0448\u043d\u0438\u0435&#187; \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u044b, \u043b\u0438\u0431\u043e \u0437\u0430\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 404. \u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0443\u0441\u0443\u0433\u0443\u0431\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438 frontend- \u0438 backend- \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u0430\u0448 api-\u043f\u0440\u043e\u0435\u043a\u0442, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0431\u0430\u043d\u043a\u043e\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438, \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0432\u044b\u0442\u0435\u043a\u0430\u044e\u0449\u0438\u043c\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u0439 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0423 \u0432\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f \u0434\u0438\u0437\u0430\u0439\u043d \u0441\u0430\u0439\u0442\u0430 \u0438\u043b\u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0441\u043e\u0431\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u0435\u0432\u044c\u044e\u0448\u0435\u043a \u0438 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0434\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0432 \u0432\u0430\u0448\u0435\u0439 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u0438 \u043f\u0440\u043e\u0434\u0435\u043b\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u0441 \u0443\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438.<\/p>\n<p>\u041a \u043f\u043b\u044e\u0441\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043d\u0435\u0441\u0442\u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0437\u0430\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b. <\/p>\n<h3>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u0432\u044c\u044e\u0448\u0435\u043a &#171;\u043d\u0430 \u043b\u0435\u0442\u0443&#187;<\/h3>\n<p>\u0414\u043b\u044f \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0439 &#171;\u043f\u043e\u0434\u0433\u043e\u043d\u043a\u0438&#187; \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0433 \u0431\u044b\u0442\u044c \u0437\u0430\u043a\u0430\u0437\u0430\u043d \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 URL \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u041d\u043e \u0435\u0441\u043b\u0438 \u0444\u0430\u0439\u043b\u0430 \u043f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443 \u043d\u0435\u0442 &#8212; \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f 404 \u043e\u0448\u0438\u0431\u043a\u0430. \u041f\u043e\u0442\u043e\u043c\u0443 \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a 404 \u043e\u0448\u0438\u0431\u043a\u0438, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u0435\u0432\u044c\u044e\u0448\u043a\u0443. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0435\u0441\u043b\u0438 \u043f\u043e \u0441\u0430\u043c\u043e\u043c\u0443 URL \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u0430\u043a\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0433\u0435\u043d\u0435\u0440\u0438\u0442\u044c \u0438 \u0432 \u043a\u0430\u043a\u043e\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u0435. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043c\u0435\u0441\u0442\u043e 404 \u043e\u0448\u0438\u0431\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0430 \u0441\u0430\u043c\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430.<\/p>\n<figure class=\"full-width\"><figcaption>\u041c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 &#171;\u043d\u0430 \u043b\u0435\u0442\u0443&#187; \u043f\u043e \u0434\u0430\u043d\u043d\u044b\u043c \u0438\u0437 URL<\/figcaption><\/figure>\n<p>\u041a \u043c\u0438\u043d\u0443\u0441\u0430\u043c \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0442\u043d\u0435\u0441\u0442\u0438 \u0432\u044b\u0441\u043e\u043a\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u043d\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u041f\u0440\u0438\u0447\u0451\u043c &#8212; \u044d\u0442\u043e \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0431\u0443\u0434\u0443\u0442 \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0432 \u0442\u0435\u0445 \u0436\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0445 \u0447\u0442\u043e \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0440\u0430\u043d\u0435\u0435.<\/p>\n<h2>\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441\u0438\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u043e\u0440\u043e\u043d \u043e\u0431\u0435\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439<\/h2>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u043e\u0434\u0435\u043b\u044b\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0438\u0434\u0435\u044f. \u0418\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0442\u044c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u043e\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0430 \u0434\u0430\u043b\u0435\u0435 \u043e\u043d\u0438 \u0431\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b\u0438\u0441\u044c \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0444\u0430\u0439\u043b\u044b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0435\u0433\u043e \u0432\u043c\u0435\u0441\u0442\u043e 404-\u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u043e \u0435\u0449\u0451 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0430 \u0434\u0438\u0441\u043a \u043f\u043e\u0434 \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u044b\u043c \u0432 URL \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 URL <code>https:\/\/example.com\/storage\/product\/[width_100]\/2.jpg<\/code> \u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043f\u0430\u043f\u043a\u0430 <code>[width_100]<\/code>\u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e, \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c <code>2.jpg<\/code>  \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f  \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0432\u044c\u044e\u0448\u043a\u0438 \u043f\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u0443. \u041f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a 404 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u0430\u0439\u043b. \u0422\u0430\u043a \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u043e\u0433\u043d\u0430\u043d\u043d\u044b\u0439 \u0431\u0430\u043d\u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439.<\/p>\n<h2>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 Laravel<\/h2>\n<ul>\n<li>\n<p>\u041f\u043e\u0442\u0440\u0435\u0431\u0443\u0442\u0441\u044f \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0438\u043b\u0438 \u0432\u043d\u043e\u0432\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 Laravel. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 <a href=\"https:\/\/github.com\/andrewinc\/scaled-image\" rel=\"noopener noreferrer nofollow\">Laravel Framework 8.83.12<\/a>.<\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0432 PHP \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 GD.<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0430\u0447\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0441 blade-\u0448\u0430\u0431\u043b\u043e\u043d\u0430 <a href=\"https:\/\/github.com\/andrewinc\/scaled-image\/blob\/master\/resources\/views\/index.blade.php#L39\" rel=\"noopener noreferrer nofollow\">resources\/views\/index.blade.php<\/a>:<\/p>\n<pre><code class=\"php\">&lt;ol>   @foreach($files as $file)   &lt;li>&lt;a href=\"\/card\/{{$file}}\">       @php         $src   = '\/storage\/product\/'.$file;       @endphp       &lt;img src=\"{{$src}}\" width=\"60\" alt=\"\"\/> {{$src}}     &lt;\/a>   &lt;\/li>   @endforeach &lt;\/ol><\/code><\/pre>\n<p>\u041f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f <a href=\"https:\/\/github.com\/andrewinc\/scaled-image\/blob\/master\/app\/Http\/Controllers\/ScaledImage404Controller.php\" rel=\"noopener noreferrer nofollow\">PHP-\u043a\u043b\u0430\u0441\u0441<\/a> \u0434\u043b\u044f \u043d\u0430\u0431\u043e\u0440\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432:<\/p>\n<pre><code class=\"bash\">php artisan make:controller ScaledImage404Controller<\/code><\/pre>\n<p>\u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432 \u043d\u0451\u043c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a \u043f\u0430\u043f\u043a\u0435 \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f\u043c\u0438 \u0442\u043e\u0432\u0430\u0440\u043e\u0432 \u043b\u0438\u0431\u043e \u043f\u0443\u0442\u044c \u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443.<\/p>\n<pre><code class=\"php\">\/**  * @param string $fname \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 (\u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u0435\u043d \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443)                         Ex.: '0.jpg' \u043f\u043e \u0443\u043c\u043e\u043b\u0447 \u043f\u0443\u0441\u0442.\u0441\u0442\u0440\u043e\u043a\u0430  * @return string Ex.: '\/home\/andrew\/project\/shop\/public\/storage\/product\/' *\/ public static function fsPath($fname='') {     return public_path(\"storage\/product\/{$fname}\"); }<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0432 <a href=\"https:\/\/github.com\/andrewinc\/scaled-image\/blob\/master\/routes\/web.php#L19\" rel=\"noopener noreferrer nofollow\">routes\/web.php<\/a>:<\/p>\n<pre><code class=\"php\">use App\\Http\\Controllers\\ScaledImage404Controller;  \/\/\u0441\u043f\u0438\u0441\u043e\u043a Route::get('\/', function () {     \/\/return view('welcome');     $files=[]; \/\/['0.jpg', '1.jpg', '2.jpg',...];     foreach(scandir(ScaledImage404Controller::fsPath()) as $f) {         if ( ('.' != $f{0}) &amp;&amp;               (!is_dir(ScaledImage404Controller::fsPath($f)))           ) $files[] = $f;     }     return view('index', ['files'=>$files]); });<\/code><\/pre>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0435\u043c\u0441\u044f <code>php artisan serve <\/code>\u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u0435\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0438\u0437 \u043f\u0430\u043f\u043a\u0438 <code>public\/storage\/product\/<\/code>  <br \/>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<figure class=\"\"><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u0443\u0432\u0438\u0434\u0438\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0442\u043a\u0440\u044b\u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u0432\u0430\u0440\u043e\u0432<\/figcaption><\/figure>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0412 <a href=\"https:\/\/github.com\/andrewinc\/scaled-image\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0447\u0442\u043e \u044f \u043f\u0440\u0438\u043b\u0430\u0433\u0430\u044e<\/a> &#8212; <a href=\"https:\/\/github.com\/andrewinc\/scaled-image\/tree\/master\/public\/storage\/product\" rel=\"noopener noreferrer nofollow\">29 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u044b\u043c \u043e\u0431\u044a\u0451\u043c\u043e\u043c 20\u041c\u0431<\/a>. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u0436\u0430\u0442\u044c \u044d\u0442\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u0448\u0438\u0440\u0438\u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0431\u044b\u043b\u0430 100 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439, \u0430 \u0432\u044b\u0441\u043e\u0442\u0430 \u0442\u0430\u043a\u043e\u0439 \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u043f\u043e\u0441\u0442\u0440\u0430\u0434\u0430\u043b\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438. \u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u044b\u0439 \u043e\u0431\u044a\u0451\u043c \u044d\u0442\u0438\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u0442 90\u041a\u0431.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 404-\u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 URL \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c:<\/p>\n<ol>\n<li>\n<p>\u0417\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043b\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 .git .png .jpg (\u0438\u043b\u0438 .jpeg)?<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u0438 URL \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443 (\u043a\u043e\u043c\u0430\u043d\u0434\u0443) \u0434\u043b\u044f \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438?<\/p>\n<\/li>\n<li>\n<p>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u0438 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438?<\/p>\n<\/li>\n<\/ol>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0451 \u0442\u0430\u043a \u0438 \u0435\u0441\u0442\u044c &#8212;  \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443 (\u043a\u043e\u043c\u0430\u043d\u0434\u0443) \u0435\u0441\u043b\u0438 \u0435\u0451 \u043d\u0435\u0442 \u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c:<\/p>\n<ol>\n<li>\n<p>\u0438\u043c\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0442\u0438\u043f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f (gif, png \u0438\u043b\u0438 jpeg) \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0432 &#171;Content-type: image\/$type&#187;;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0440\u0435\u0441\u0430\u0439\u0437\u0430 \u0442\u0438\u043f\u0430  <code>\/[width_100]\/<\/code>;<\/p>\n<\/li>\n<\/ol>\n<p>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0441 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u0432 <a href=\"https:\/\/github.com\/andrewinc\/scaled-image\/blob\/master\/app\/Http\/Controllers\/ScaledImage404Controller.php\" rel=\"noopener noreferrer nofollow\">ScaledImage404Controller<\/a>:<\/p>\n<pre><code class=\"php\">const R = '\/\\\/(\\[width_\\d+\\])\\\/\/';      \/** \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u0430\u0441\u0448\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0438 \u043c\u0435\u0441\u0442\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f      (\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u043f\u0430\u043f\u043a\u0430 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f)  * @param string $uri Ex.: '\/storage\/product\/[width_100]\/2.jpg'  * @return array|boolean false \u0435\u0441\u043b\u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f resize \u0438\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0430; \u043c\u0430\u0441\u0441\u0438\u0432 \u0441     \u043e\u0441\u043d. \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0440\u0435\u0441\u0430\u0439\u0437\u0430 Ex.: ['outsize'=>'[width_100]', 'type'=>'jpeg',       'src'=>\"\/home\/andrew\/project\/shop\/public\/storage\/product\/2.jpg\",       'dest'=>\"\/home\/andrew\/project\/shop\/public\/storage\/product\/[width_100]\/2.jpg\"]  *\/ public static function outsizeArr($uri) {     \/\/ \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442?     $typeImage = static::imageFileTypeFromExt($uri); \/\/ 'png' | false     if (false === $typeImage) return false;      \/\/\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0440\u0435\u0441\u0430\u0439\u0437\u0430?     $needResize=preg_match(static::R, $uri, $m);\/\/$m=[\"\/[width_100]\/\", \"[width_100]\"]     if (!$needResize) return false;     $outsize = $m[1]; \/\/ '[width_300]'      \/\/ \u0443\u0431\u0440\u0430\u0442\u044c outsize \u0438\u0437 $url     $URI = str_replace($m[0], '\/', $uri);  \/\/ '\/storage\/product\/2.jpg'      $startsWith = Str::of($URI)->startsWith($storage_uri = '\/storage'); \/\/ true     if (!$startsWith) return false;      $file = static::uriToPath($URI); \/\/ '\/home\/...\/public\/storage\/product\/2.jpg'     if (!file_exists($file)) return false;      \/\/\u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430     $name = basename($file); \/\/'2.jpg'      \/\/\u043f\u0443\u0442\u044c \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 (\u0431\u0435\u0437 \u0438\u043c\u0435\u043d\u0438)     $pathToCreate = static::uriToPath(substr($uri, 0,-1*strlen($name)));      \/\/ '\/home\/...\/public\/storage\/product\/[width_100]\/2.jpg'      \/\/\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043f\u0443\u0442\u044c \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 \u0435\u0441\u043b\u0438 \u0435\u0433\u043e \u0435\u0449\u0451 \u043d\u0435\u0442. \u043f\u0440\u0438 \u043d\u0435\u0443\u0434\u0430\u0447\u0435 - \u0432\u044b\u0439\u0442\u0438     if (       !file_exists($pathToCreate) &amp;&amp; !mkdir($pathToCreate, 0777, true)     ) return false;      return [       'outsize'=>$outsize,       'type'=>$typeImage,       'src'=>$file,       'dest'=>$pathToCreate.$name     ]; }  \/** \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c mime-\u0442\u0438\u043f \u0444\u0430\u0439\u043b\u0430-\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f ('Content-type: image\/'...)     \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430-\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f  * @param string \u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430\\URI \u0438 \u0442.\u043f. Ex.1: '1.png' Ex.2: '\/storage\/product\/10.jpg'  * @return string|boolean \u0442\u0438\u043f  Ex.: 'png' \u0438\u043b\u0438 false \u0435\u0441\u043b\u0438 \u0444\u0430\u0439\u043b            \u043d\u0435 \u0438\u0437 '*.gif', '*.jpeg', '*.jpg', '*.png' *\/ public static function imageFileTypeFromExt($filename) {     $ext = strtolower(fileext($filename));     if ($ext==\".jpg\") $ext = '.jpeg';     if (in_array($ext, ['.gif', '.jpeg', '.png'])) return substr($ext, 1);     else return false; }  \/**  * @param string $uri Ex.: '\/storage\/product\/2.jpg'  * @return string Ex.: '\/home\/andrew\/project\/shop\/public\/storage\/product\/2.jpg' *\/ public static function uriToPath($uri='') {     return public_path($uri); }<\/code><\/pre>\n<p>\u0438 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f (\u0432 \u043d\u0451\u043c-\u0436\u0435):<\/p>\n<pre><code class=\"php\">\/** \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430 (\u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0442\u043e\u0447\u043a\u0443)  * @param string $filename \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0441 \u043f\u043e\u043b\u043d\u044b\u043c \u043f\u0443\u0442\u0451\u043c \u0438\u043b\u0438 \u0431\u0435\u0437 \u043d\u0435\u0433\u043e  * @return string \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0442\u043e\u0447\u043a\u0443                   \u0438\u043b\u0438 \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f  * Ex.1: fileext('script.js');\/\/'.js'  * Ex.2: fileext('www\/.htaccess');\/\/'.htaccess'  * Ex.2: fileext('www\/README');\/\/'' *\/ function fileext($filename){     $ext='';     $filename=basename($filename); \/\/ \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043c\u044f     if (($pos=strrpos($filename, '.'))!==false) $ext=substr($filename, $pos);     return $ext; }<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 <code>ScaledImage404Controller::outsizeArr<\/code> \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 (\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435) \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 404 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 <a href=\"https:\/\/github.com\/andrewinc\/scaled-image\/blob\/master\/app\/Exceptions\/Handler.php#L44\" rel=\"noopener noreferrer nofollow\">app\/Exceptions\/Handler.php<\/a>. \u0412 \u043c\u0435\u0442\u043e\u0434 <code>register()<\/code>\u0434\u043e\u0431\u0430\u0432\u0438\u043c:<\/p>\n<pre><code class=\"php\">$this->renderable(function (NotFoundHttpException $e, $request) {     if (       is_array($a = ScaledImage404Controller::outsizeArr(\"\/\".$request->path()))       &amp;&amp;       ($imSrc = ScaledImage404Controller::getImage($a['src']))       &amp;&amp;       ($im = ScaledImage404Controller::imageResize(         $imSrc,          $a['outsize'],         $a['type']       ))     ) {         $type = $a['type'];         ob_start();         switch($type) {             case 'gif':                 imagegif($im);                 imagegif($im, $a['dest']);                 break;             case 'png':                 imagepng($im);                 imagepng($im, $a['dest']);                 break;             default:                 imagejpeg($im);                 imagejpeg($im, $a['dest']);         }         $buffer = ob_get_contents();         ob_end_clean();       <\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-333581","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/333581","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=333581"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/333581\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=333581"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=333581"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=333581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}