dlinyj: (Default)
[personal profile] dlinyj
Дорогие друзья, стыдно признаться, но вот web-программирование, разметка html - это то, что прошло практически мимо меня. javascript и php до недавнего времени для меня был совершенно пустой звук. Да, некоторые теги благодаря данному блогу я знаю, конечно, но это не серьёзно.

Но вот ударила мне моча в голову, пришла "гениальная идея", и решил я таки приобщиться к прекрасному. Прикупил себе за копьё облачный сервант. И думаю, сейчас забубеню. И началось с того, что вроде всё стоит (apache2, php), но нифига не пашет php. Что и как завести - не разумем. Слава богу, камраден [livejournal.com profile] goodic подсобил.

А задача столь простая, что даже стыдно. Т.з. такое:

1. Заглавная страница с одной кнопкой (или двумя) "Загрузить файл". Типа такой:



Можно конечно сделать красивые кнопки, но это не принципиально.

2. Пипка "загрузка файла" загружает файл, проверяет чтобы он соответствовал атрибутам (размеру, разрешению и т.п.), и после чего запускает некий bash-скрипт на сервере. Касательно скрипта не принципиально, хоть сишную программу. Можно пока просто с echo скрипт.

3. После выполнения скрипта (важно контролировать момент окончания работы скрипта), загружается просто страница с некоторой картинкой. Или отдаётся картинка на отдачу.

Задача чопорная, простая, тупая. Но для тех, кто нифига не волочёт - непосильная. Буду признателен за помощь. Желательно не "сделать за меня", а объяснить что же и как, может показать примерами. Сервак опытный, так что можно будет и натурно показать, сломать не жалко (поднимем новый, если что (снапшот сделаем).

З.Ы. У меня даже загрузку по двум мануалам не получилось сделать. Не грузит и всё тут... Может права, может лева...
1. http://phpclub.ru/detail/article/upload
2. http://www.php.su/phphttp/?uploads

Date: 2016-02-18 02:57 pm (UTC)
ext_926173: (RB Astro 6)
From: [identity profile] dimka-rs.livejournal.com
Выложил свой пример: http://pastebin.com/acqV16Z4
Есть две страницы - статическая с формой и cgi, обрабатывающий загруженный файл (exec.cgi)
Хвост статической страницы где-то потерял.

Date: 2016-02-18 03:01 pm (UTC)
From: [identity profile] goodic.livejournal.com
за такую помощь как я оказал надо линейкой по рукам лупить

Date: 2016-02-18 03:15 pm (UTC)
From: [identity profile] eddy-em.livejournal.com
Зря ты пыхпых выбрал. Это ж полная Ж!
Да и апач тебе вряд ли нужен, в большинстве случаев NGINX хватает. Впиливаешь fast-CGI и все работает как надо.
Я, кстати, когда-то начал писать библиотечку (https://github.com/eddyem/c-cgi-lib), но до конца не добил. Там какой-то косяк был с загрузкой файлов (то ли большие не грузились, то ли не было мультивыбора — не помню уже, давно это было). Возможно, когда-нибудь добью. Просто у меня пока нет задач загрузить файл на сервер, обычно наоборот — получить файл с данными.

Кстати, кажись, жабкоскрипт современного веба уже вроде как умеет слать файлы через вебсокеты. Это вообще задачу упрощает.

Date: 2016-02-18 03:23 pm (UTC)
From: [identity profile] mbr.livejournal.com
эксперт по сортам говна :)

Date: 2016-02-18 03:26 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Еду в метро и с этого комментария ржу аки конь. Весь вагон вылупился на меня. Спасибо. Настроение на весь вечер.

Date: 2016-02-18 03:29 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Сервер уже имеет все предустановленное. Зачем изобретать велосипед, если всё есть. Надо просто решить задачу.

Date: 2016-02-18 06:31 pm (UTC)
From: [identity profile] arush-damage.livejournal.com
Блин, как давно это все было....

ЕМНИП все что надо - правильно обработать хттп запрос типа POST.
Файл должен в параметрах идти, ну т.е. имя файла отдельно и отдельно содержимое скорее всего заенкоженное в MIME, не помню уже.

Date: 2016-02-18 06:41 pm (UTC)
From: [identity profile] arush-damage.livejournal.com
Глянул примеры.
Пхп сам миме разбирает, это гуд.
Только обрати внимание что в примере используется $_FILES['userfile'] потому что в форме указанно имя "userfile" для поля ввода: <input name="userfile" type="file">
Если name в инпуте будет другое - поправь имя в скрипте тоже.
Edited Date: 2016-02-18 06:42 pm (UTC)

Date: 2016-02-18 07:48 pm (UTC)
From: [identity profile] sevasat.livejournal.com
У тебя на сервере еще и СистемД поди! Надо срочно переустановить его на Генту!

Date: 2016-02-18 09:50 pm (UTC)
From: [identity profile] eddy-em.livejournal.com
Да, сорта разные бывают. Высшее говно — systemd. Уровень пониже — пыхпых. Ну и так далее.
Еще, правда, есть разные сорта говна в железе. Скажем, наивысший уровень — ардуйня. Уровень пониже — та же отмель, но на сях. И т.д., и т.п. ☺

Date: 2016-02-18 09:53 pm (UTC)
From: [identity profile] eddy-em.livejournal.com
"Все предустановленное" в 100% случаев означает нерабочее говно.
Это как вместо линукса бубунту на компьютер поставить.

Date: 2016-02-19 01:55 am (UTC)
From: [identity profile] getinaks.livejournal.com
Про systemd мне понравилась фразочка, проскочившая в irc на #coreboot. Примерный перевод такой "systemd сделали для того чтобы избежать зоопарка костылей в rc.d/openrc, однако получилось, что для его работы пришлось вставить больше костылей, чем было". Брр, сидя на генте недавно обнаружил, что это поделие (systemd) пробралось уже почти везде, акромя генты.

Date: 2016-02-19 05:26 am (UTC)
From: [identity profile] eddy-em.livejournal.com
Если это говно и в генту проберется, мне придется менять род деятельности на такой, где компьютеры не нужны, потому как фряха до сих пор не готова для десктопа ☹

Date: 2016-02-19 06:52 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Ты запарил. Реально.

Date: 2016-02-19 07:40 am (UTC)
From: [identity profile] goodic.livejournal.com
Но я тем не мене с ним соглашусь. Вчера пока разобрался где и что у них там настроено уже потратил нормально времени.
Лучше голую ось и поверх самому поставить (могу и я) что бы точно знать где, что и как настроено.

Date: 2016-02-19 07:42 am (UTC)
From: [identity profile] goodic.livejournal.com
[livejournal.com profile] dlinyj я CGI не разрешал! надо раскомментить настройки

Date: 2016-02-19 07:53 am (UTC)
From: [identity profile] eddy-em.livejournal.com
Чем запарил?
Есть проблема "линуксокапца", она реальна и не надо на нее глаза закрывать. Когда убьют линукс, чем пользоваться? Лопатой?

Date: 2016-02-19 09:24 am (UTC)
From: [identity profile] juray.livejournal.com
А что именно не работает?
Файл на сервере не появляется?

Что касается "контролировать момент окончания работы скрипта" - вроде бы тут недостаточно просто отдать страницу или картинку по окончанию. Если процесс загрузки был длинный, браузер может уже по таймауту перестать ждать ответа сервера.
Тут нужно не только на сервере (бэк-енд) кодить, но и в браузере (JS) - или регулярное "пингование" сервера, или создание callback-запроса (не помню, как это в вебдеве называется).
Впрочем, возможно, я гоню, и такое усложнение требуется только для отображения прогресса... Давно уже пытался осваивать эту тему, забросил.

Маленький лайфхак по отладке: можно сделать вывод значений переменных по ходу выполнения, аналогично printf - только тут echo.

Date: 2016-02-19 10:53 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Он запарил навязывать своё мнение. Особенно считая что все лохи, один он Дартаньян

Date: 2016-02-19 10:54 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Мне нравится Ubuntu. И мне плевать что ты думаешь по поводу неё

Date: 2016-02-19 11:03 am (UTC)
From: [identity profile] eddy-em.livejournal.com
Она тебе нравится до тех пор, пока хватает дефолта. Как только тебе нужно будет не развлекаться, а работать, ты поймешь, какоя бубунта дерьмо!

Date: 2016-02-19 11:06 am (UTC)
From: [identity profile] eddy-em.livejournal.com
Есть такое ☺

Date: 2016-02-19 05:54 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Ты не поверишь, но она моя рабочая ОС в последние 3-4 года. Я в ней именно работаю.

Date: 2016-02-19 05:55 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Тогда на хабре тебя выпиливают совершенно справедливо. Это никому не нравится.

Date: 2016-02-19 06:23 pm (UTC)
From: [identity profile] getinaks.livejournal.com
Наверное уже скоро приёдется задумываться о смене пола на кухне. Бо cat /var/log/messages | grep systemd уже выдаёт не пустую строку. Да и флаг "systemd" тоже имеется. По сути дела генту последний дистриб, который пилит openrc, даже арч на системд слетел. Хотя по большому счёту инит должен быть на скриптах, а не на непонятном гиганском бинарнике, который плющит по мелочам.

Date: 2016-02-19 09:21 pm (UTC)
From: [identity profile] eddy-em.livejournal.com
Не надо про быдлохабру. Там на одну хорошую публикацию 100500 дерьма. И гейско-вантузячий уклон. И кармадрочерство. В общем, то, что изначально задумывалось как хорошая вещь, как обычно бывает в этой стране, превратилось в обычный шлак.

Date: 2016-02-19 09:21 pm (UTC)
From: [identity profile] eddy-em.livejournal.com
Ну, всяк кулик свое болото хвалит.

Date: 2016-02-19 09:25 pm (UTC)
From: [identity profile] eddy-em.livejournal.com
> grep systemd /var/log/messages уже выдаёт не пустую строку
У меня пусто.
> флаг "systemd" тоже имеется
А вот это — тревожный звоночек, да.
> даже арч на системд слетел
Я потому с рачика на генту и перешел.
> Хотя по большому счёту инит должен быть на скрипта
Согласен. Но подавляющее большинство юзеров — именно юзеры. Им насрать, как оно работает, лишь бы работало. Они не пишут софт, не поднимают уйму сервисов, а просто используют дефолтное окружение и довольствуются этим. Для них что мастдайка, что бубунта, что гей-ось, что хоть черт лысый — все едино! Лишь бы знакомые кнопочки были.

Date: 2016-02-20 05:26 pm (UTC)
From: [identity profile] electrodummy.livejournal.com
может быть уже и поздно, но всё-таки вдруг пригодится мой пример: http://pastie.org/10730443
Разумеется что он годится только для случаев, когда тот самый "некий скрипт" работает не сильно долго (ориентировочно не дольше 30 сек).

Date: 2016-02-24 09:33 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Примеры всегда актуальны :)))

Date: 2016-02-24 09:35 am (UTC)
From: [identity profile] dlinyj.livejournal.com
И файл не появляется, думаю проблема с правами.

За заметку большое спасибо!

Date: 2016-02-24 10:41 am (UTC)
From: [identity profile] juray.livejournal.com
вот да, права - частый источник затыков. Надо смотреть, какой демон с какими правами работает - вебсервер и пхп могут от разных пользователей запускаться. Смутно припоминаю, вроде я тоже на эти грабли напарывался в CentOS.

А через echo можно проверить, что вообще поступает на вход пхп-скрипта, правильно ли пришёл запрос.

January 2026

S M T W T F S
    123
456 78910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 23rd, 2026 10:46 am
Powered by Dreamwidth Studios