LINUX.ORG.RU

10
Всего сообщений: 66

Не работает CGI и WSGI в Apache CentOS 8

Добрый вечер! Может быть кто-то подскажет, почему не выполняются скрипты в cgi в Apache на CentOS 8? В виртуальном хосте прописываю

"Options +ExecCGI

SetHandler cgi-script .cgi .py"

Получаю ошибку 403 Forbidden в браузере.

В логах

AH01262: Options ExecCGI is off in this directory: /web/sites/example.ru/www/test.py

 , , ,

try20 ()

Толстый web-сервер или толстый web-клиент

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

 , ,

gedisdone ()

CGI bash и вывод переменных

Привет, делаю простенькую панельку с информацией, решил делать на bash, просто так захотел. Верчу через lighttpd.

Дано:

  • index.sh
    #!/bin/bash
    template=$(<template.html)
    title="From bash"
    eval echo "$template"
    
  • template.html
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <title>${title}</title>
      </head>
      <body>
        <h1>Hi</h1>
      </body>
    </html>
    

Увы в ответ 500 статус, если не использовать eval в заголовке страницы ${title}, как бы обработать это изящнее, просто прочитать шаблон и подставить куда нужно выхлопы от утилит?

Пробовал иначе, эффект тот-же

printf '%b\n' "$(cat template.html)"
cat template.html | xargs echo -e
eval echo \$template

Цель:

Лыжи не едут, ищу наводку как заставить работать такую конструкцию в данном контексте:

var="Hi $username"; username="John Doe"; eval echo $var
без eval переменная не обрабатывается, а используя его парсится что-то из html тегов и страничка падает.

Падает из-за проблемы с newline, смена IFS не помогает(

 , ,

WoozyMasta ()

ServarAPI

Добрый день LOR. Подскажите может кто нить знает годные статьи или книги по server api. В частности хочется разобраться с FCGI, CGI, FastCGI, mod_php. Интересует в основном настройка, использование. Куда, зачем почему. Гуглится в основном только коротко о них.

 ,

Serzis ()

Современные CGI фильмы

Вчера пересмотрел культовый FF: Spirit Within (2001). Графон обалденный. Особенно акцент делается на реалистичные волосы героини. И это 2001 год. Теперь смотрим на современный CGI шлак который в основном мультяшный (всякие Мадагаскары и эти желтые лампочки в очках).
Внимание вопрос. Теперь серьезный вдумчивый реалистичный CGI не в моде? Может я не уследил не посмотрел какой то вин?
Помню еще Беовульф с рендереной Джоли. Но кинцо так себе.

 , , ,

bga_ ()

Программирование для Веб: JavaScript, HTML формы, обработчики, CGI, шелл

Ищу разовые заказы или работу в небольших проектах. Петербург или удалённо.

Портфолио:

Фотография о. Лауватсаари в Ладоге - JavaScript для магазина цифровых товаров создающий форму оплаты, CGI обрабатывающий HTTP оповещение платёжной системы и создающий уникальную ссылку на товар.

Валидация счёта Яндекс.Деньги - просто пример.

Форма заказа решения задач по начертательной геометрии - парсинг формы с файлами и пересылка заказа на почту исполнителя.

 , , , ,

Mazilin ()

Сookies в bash cgi?

Друзья, подскажите как решить задачку. Делаю веб-морду для управления малинкой через сеть. Выбрал CGI и Bash (для моих нужд достаточно). Собственно вопрос. Как в CGI сценарии на Bash отправлять cookies с определенным сроком жизни? Нужно в админку заходить автоматом без ввода логина/пароля в течении дня, например. Ну и для других задумок. Реализуется? Сервер busybox httpd если что, но можно и nginx поставить.

 , , ,

Deleted ()

Когда хочешь бесплатный хостинг и не знаешь PHP

Здравствуйте

Попросили меня разместить где-нибудь бесплатный сайт-визитку. В интернете вижу массу предложений бесплатных хостингов с «CGI, PHP, MySQL»

С такими хостингами ни разу в жизни не работал. PHP я не знаю и знать не хочу. Другие скриптовые языки как правило не поддерживаются. Но некоторый интерактив на сайте всё-таки нужен (отзывы, форма отправки сообщения)

И подумалось мне, а если я напишу CGI-програмку на компилируемом языке и размещу в cgi-bin? У хостера ведь написано «CGI». Кто имеет опыт с такими хостингами, как думаете, сработает? И не заругает ли хостер?

 , ,

makoven ()

Сокеты - Несовпадение длины пакетов MJPEG при чтении

Есть сервер который читает по 255 байт MJPEG поток и сразу их же по 255 байт отправляет на заданный ip (другой сервер)

std::stringstream requestQuery;
requestQuery << "GET /axis-cgi/mjpg/video.cgi?resolution=320x240 HTTP/1.1\r\n"
             << "Host: 88.53.197.250\r\n"
             << "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n"
             << "\r\n\r\n";
std::string request = requestQuery.str();

// sock - источник MJPEG
if (send(sock, request.c_str(), request.length(), 0) != (int)request.length()) {
    std::cout << "Error sending request." << std::endl;
    exit(1);
}

char buffer[256];
char cur2;
while (1) {
    bzero(buffer,256);
    size_t n = read(sock,buffer,255);
    if (n < 0)
        printf("ERROR reading from socket\n");
    size_t n2 = write(sockServ,buffer,255);  // sockServ - приемник MJPEG
}

Данные приходят, я их вижу они выглядят так

HTTP/1.1 200 OK\r\n
Cache-Control: no-cache\r\n
Pragma: no-cache\r\n
Expires: Thu, 01 Dec 1994 16:00:00 GMT\r\n
Connection: close\r\n
Content-Type: multipart/x-mixed-replace; boundary=--myboundary\r\n
\r\n
--myboundary\r\n
Content-Type: image/jpeg\r\n
Content-Length: 8530\r\n
\r\n
(тут пошли данные)

На заданном IP есть другой сервер.

Я открываю сокет, жду подключения (accept) и пытаюсь считать данные. Вначале считываю общий заголовок, Потом заголовок первого маркера "--myboundary" до значения длины, потом саму длину

bzero(buffer,512);
n = read(newsockfd,buffer,185); // общий заголовок
if (n < 0) error("ERROR reading from socket");
// printf("%s\n",buffer);

while(1) {
    bzero(buffer, 512);
    n = read(newsockfd, buffer, 56); // заголовок с --myboundary
    printf("HEADER:\n",buffer);
    printf("%s\n",buffer);// вывожу заголовок
    if (n < 0) error("ERROR reading from socket");
    bzero(filesizetext,20);
    int i = 0;
    while(1) {
        n = read(newsockfd, &ch, 1); // по одному символу до конца строки считываю значение Content-Length
        if (n < 0) error("ERROR reading from socket");
        if (ch == '\r')
            break;
        filesizetext[i] = ch;
        i++;
    }
    int currFileSize = atoi(filesizetext); // преобразую Content-Length в число
    n = read(newsockfd, buf, currFileSize); // считываю Content-Length байт
    if (n < 0) error("ERROR reading from socket");

	// идем дальше, снова считывать заголовок  с --myboundary
}

Когда доходим до «идем дальше, снова считывать заголовок с --myboundary» Вместо заголовка выводятся кракозябры - значит данные еще не кончились, и мы считали раньше чем нужно.

1) Чем может объясняться несовпадиние длины данных?

2) Можно ли с писать в сокет по 512 байт, а читать переменное количество?

 , , ,

JANB ()

FreeBSD NGINX+fcgiwrap=«502 Bad Gateway»

Имеем:

FreeBSD 10.3-RELEASE FreeBSD 10.3-RELEASE
nginx-1.10.1,2
fcgiwrap-1.1.0_6

При попытке открыть в браузере любой pl скрипт получаю «502 Bad Gateway».

Настройка виртуального хоста в NGINX:

server {
    listen 80;
    server_name perl.site.ru;

    root /web/sites/perl.site.ru/www;
    index index.php index.html index.htm index.cgi index.pl;
    access_log /web/sites/perl.site.ru/log/access.log main;
    error_log /web/sites/perl.site.ru/log/error.log;

    location ~* \.php$ {
        fastcgi_pass   unix:/tmp/php-fpm.sock;
        fastcgi_index index.php;

        fastcgi_param DOCUMENT_ROOT /web/sites/perl.site.ru/www/;
        fastcgi_param SCRIPT_FILENAME /web/sites/perl.site.ru/www$fastcgi_script_name;
        fastcgi_param PATH_TRANSLATED /web/sites/perl.site.ru/www$fastcgi_script_name;

        include fastcgi_params;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_param REQUEST_METHOD $request_method;
        fastcgi_param CONTENT_TYPE $content_type;
        fastcgi_param CONTENT_LENGTH $content_length;
        fastcgi_intercept_errors on;
        fastcgi_ignore_client_abort off;
        fastcgi_connect_timeout 60;
        fastcgi_send_timeout 180;
        fastcgi_read_timeout 180;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
    }

    location ~ \.pl|cgi$ {
        gzip off;
        include fastcgi_params;
        fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock;
        fastcgi_index index.pl;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    }

}

rc.conf

# PHP-fpm
php_fpm_enable="YES"
#
# NGINX
nginx_enable="YES"
#
# FastCGI wrapper
fcgiwrap_enable="YES"
fcgiwrap_user="www"
fcgiwrap_socket_owner="www"
fcgiwrap_socket_group="www"
fcgiwrap_socket="unix:/var/run/fcgiwrap/fcgiwrap.sock"

Перерыл кучу форумов, ничего не помогает. С PHP все прекрасно работает. Подскажите, может я что-то делаю не там или не-то?

 , , ,

the_vitas ()

php 4.4.9

есть древний сайт, который работает на php 4.4.9, мне надо его перенести на centos 7, там уже php 7 стоит, пробую собирать php 4.4.9

'./configure' '--prefix=/opt/php-4.4' '--with-config-file-path=/opt/php-4.4' '--sysconfdir=/opt/php-4.4' '--with-config-file-scan-dir=/opt/php-4.4' '--with-apxs2=/usr/sbin/apxs' '--with-session' '--without-mysql' '--without-xml' '--without-recode' '--without-pear' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--with-zlib-dir=/usr' '--enable-fastcgi' '--enable-cgi'

make && make install

но в /opt/php-4.4/bin/

 ls /opt/php-4.4/bin/
php  php-config  phpize
нет файла php-cgi, как решить?

 , , , ,

Garcia ()

В России научились в хорошее кино?

Уже который раз пересматриваю «Хардкор». Снято отлично, CGI на высочайшем уровне, после такого уже противно смотреть на голливудские поделия(не все конечно же). Даже после просмотра «making of» монтаж и графика не бросаются в глаза, портит все только русская озвучка.

Вообще в России очень редко выдают что-то годное. Почему тот же Голливуд выдает годноту почти каждый раз при самых разных бюджетах, а российские режиссеры не могут даже при большом бюджете выдать хоть что-то не блевотное.

Про Казахстан вообще молчу, у нас тут умеют только в исторические фильмы про сам Казахстан.

 , ,

ozzee ()

web-hosting php mail() log

Добрый день!

Имеется вебхостинг с большим количеством сайтов. Все сайты на 80-м порту работают через nginx, на 81-м через apache. Существует 2 типа работы: с cgi и без. Для сайтов с cgi есть отдельный каталог в /var/www/php-bin/*/php.ini с дополнительными конфигами.

Для этого всего нужно создать логгер всех вызовов mail() из php. Для этого было нагуглено решение с двумя скриптами.

Для начала я взял и указал sendmail-wrapper в указанных выше php.ini файлах, а так же добавил опцию:

auto_prepend_file = /usr/local/bin/env.php
На этом этапе всё пошло не так. Сайты выдают internal server error (500) в логе это:
PHP Warning:  Unknown: open_basedir restriction in effect. File(/usr/local/bin/env.php) is not within the allowed path(s): (/var/www/site.ru/data:.) in Unknown on line 0
Получается так, что нужно добавить директиву open_basedir для всех сайтов.

На данном этапе мне не понятно следующее — если сайт работает через cgi, то для него имеет значение файл /etc/php5/apache2/php.ini или нужно указывать в его отдельном файле? Сами сайты описаны вот так:

<Directory /var/www/site.ru/data/www/site.ru>
        Options -Includes +ExecCGI
        php_admin_value open_basedir "/var/www/site.ru/data:."
        php_admin_flag engine on
</Directory>
<VirtualHost ip:81 >
        ServerName site.ru
        CustomLog /var/www/httpd-logs/site.ru.access.log combined
        DocumentRoot /var/www/site.ru/data/www/site.ru
        ErrorLog /var/www/httpd-logs/site.ru.error.log
        ServerAdmin webmaster@site.ru
        ServerAlias www.site.ru
        SuexecUserGroup site.ru site.ru
        AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
        AddType application/x-httpd-php-source .phps
        php_admin_value open_basedir "/var/www/site.ru/data:."
        php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f webmaster@site.ru"
        php_admin_value upload_tmp_dir "/var/www/site.ru/data/mod-tmp"
        php_admin_value session.save_path "/var/www/site.ru/data/mod-tmp"
        VirtualDocumentRoot /var/www/site.ru/data/www/site.ru/%1
        ScriptAlias /cgi-bin/ /var/www/site.ru/data/www/site.ru/cgi-bin/
</VirtualHost>
Возникла мысль, что переписывать для всех sendmail_path не логично, потому можно настоящий sendmail переименовать в /usr/sbin/sendmail-real и его же в обёртке вызывать, которую переименовать в обычный sendmail. Но что делать с env.php?:
<?php
putenv("HTTP_HOST=".@$_SERVER["HTTP_HOST"]);
putenv("SCRIPT_NAME=".@$_SERVER["SCRIPT_NAME"]);
putenv("SCRIPT_FILENAME=".@$_SERVER["SCRIPT_FILENAME"]);
putenv("DOCUMENT_ROOT=".@$_SERVER["DOCUMENT_ROOT"]);
putenv("REMOTE_ADDR=".@$_SERVER["REMOTE_ADDR"]);
?>
Нужно куда-то его переместить, чтобы он был доступен для всех, но куда? А так же, будет ли это всё работать для nginx? PHP вроде общий для всех, но что-то я сомневаюсь (до этого имел место спам, который никак не детектился в прошлом логгере php mail, решил переделать)

Заранее благодарен за советы!

 , , , ,

conformist ()

К моему вопросу про людей

https://youtu.be/CYBR6lCiQ6U

Выглядит вполне реалистично.

 , ,

ozzee ()

Недруги свободного софта, зацените возможности Blender

Да, все мы видели мультики и всё такое, но вот такая иллюстрация возможностей: https://www.youtube.com/watch?v=5jEc6IVrHzg

Это можно запилить у себя дома на коленке без покупки софта по космическим ценам (и работающем только офтопике), ну и где ваш б-г теперь?

Где тот парниша, который говорил, что блендер в развитии остановился на уровне 2005 года, дайте его сюда!

 , , , ,

kep ()

RewriteEngine magic

Как с помощью RewriteEngine переадресовывать все запросы с:

hesgay.net/domen/$name?a=$1&b=$2

на

hesgay.net/domen.cgi?name=$name&a=$1&b=$2

(всё что начинается со знака $ — переменные)

У меня никак не получилось.

 

iampluralgay ()

Перенаправление через htaccess

На сервере есть скрипт, который принимает аргументы таким образом: ololo.ru/cgi-bin/test.pl?data=flood
Задача: с помощью средств .htaccess перенаправлять все вида ololo.ru/test/$1 на ololo.ru/cgi-bin/test.pl?data=$1. Это реально?

 ,

onekasper ()

Замена CGI

Я вот юзаю активно такую фигню, это видимо CGI называется, короче смысл в том, что дергаю из основного лупа сервера файлы на выполнение, и, соответственно, отправляю. Очень прикольно и гибко получается. Можно миксовать любое количество языков в одну кучу. Это сейчас считается некомильфо, из-за расходов на системные вызова. Мне, в принципе хватает пока производительности, тормозов, задержек нет никаких, все делается асинхронно. Но я так, на будущее думаю, если вдруг возникнут проблемы с производительностью, можно ведь это все переписать в таком стиле, что вместо скриптов дергать сервера, которые постоянно запущены, и ожидают запроса. Взлетит ли такая технология?

 ,

somequest ()

Python3 Hello World в веб

Уважаемые разработчики на Python, подскажите пожалуйста, я уже 4-й день пытаюсь настроить простенький вывод Hello World на веб-морду, на локалхосте. ОС Debian 7, Python3, запустить пытаюсь через встроенный в Python http-cgi сервер.

Делаю по этой инструкции:
pythonworld(точка)ru/web/cgi-1.html

Запускаю сервер, из того каталога, где лежит файл hello.py, командой

python3 -m http.server --cgi


Сервер стартует, без ошибок.
Serving HTTP on 0.0.0.0 port 8000  

Открываю в браузере адрес 192.168.2.244:8000, все хорошо открывается, в консоли пишется:
192.168.2.244 - - [06/Nov/2015 14:55:03] "GET / HTTP/1.1" 200 


Пытаюсь открыть файл hello.py, он открывается, но как текстовик, т.е просто получаю его содержимое( Парва все выставлены правильно. Не знаю уже, в чем может быть дело, посоветуйте пожалуйста что-нибудь!

Содержимое hello.py
#!/usr/bin/env python3

print("Content-type: text/html")
print()
print("<h1>Hello world!</h1>")


Django или другой фреймворк пока ставить не хотелось бы.

 , , ,

Fess88 ()

bash cgi как преобразовать спецсинволы на русском языке

Имеем синвольный map:

%E0 %E1 %E2 %E3 %E4 %E5 %B8 %E6 %E7 %E8 %E9 %EA %EB %EC %ED %EE %EF %F0 %F1 %F2 %F3 %F4 %F5 %F6 %F7 %F8 %F9 %FA %FB %FC %FD %FE %FF %C0 %C1 %C2 %C3 %C4 %C5 %A8 %C6 %C7 %C8 %C9 %CA %CB %CC %CD %CE %CF %D0 %D1 %D2 %D3 %D4 %D5 %D6 %D7 %D8 %D9 %DA %DB %DC %DD %DE %DF %3D %5C %2F% A8 %21 %22 %B9 %3B %25 %3A %3F %29 %2B %2F

Бытаемся сделвть:

's/%E0/а/'

Как можно произвисти преобразование спецсинволов на bash

 , , , ,

ne-vlezay ()