Подключение Perl/CGI скрипта к пхп скрипту

PHPCod3r

Знаток
Регистрация
7 Июн 2010
Сообщения
257
Реакции
25
Вот встала такая проблема, очень нужно вызвать перл скрипт в пхп скрипте.
Вообще есть очень большое желание переложить работу с файловой
системой на плечи перла, к примеру выставить дату на каталог через перл очень просто а вот как сделать это через пхп?
Конечно можно сделать так
PHP:
system('./test.pl');
ну или как нить в этом духе, но использовать системные вызовы уж
очень сильно не хочется..
Вот смотрю в строну функции virtual

Но она что то совсем не хочет работать ((
Не знаю правильно ли я тестирую , вот к примеру сделал так
взял такой самый простой перловый скрипт
Код:
#!/usr/bin/perl
print "Content-Type: text/plain ";
print "Hello!";
В пхп скрипте в той же дире пишу
PHP:
<?php
virtual("./test.pl");
но результата нуль ((
Вообщем если кто уже имел дело с этой функцией подбросте рабочих примеров, хоть будет за что зацепиться...
 
я точно не помню, но вроде как virtual работает только в cgi версии пхп.

но в любом случае я бы использовал system/exec
 
я точно не помню, но вроде как virtual работает только в cgi версии пхп.

virtual это так называемая Apache Functions, вот тут вот про эти функции сказано

These functions are only available when running PHP as an Apache module.
Я запускаю их когда
такой вот скрипт
PHP:
print 'Interface Type:'.PHP_SAPI."\n"
выдает
Interface Type:apache2handler
К примеру функция getallheaders замечательно работает, да и пхп скрипты можно инклюдить через виртуал, но вот насколько возможно
заставить выполниться перл скрипт пока не ясно....

Не ужели никто с этой функции ни разу не сталкивался?
 
Ну если просто дату то каталога то
Для просмотра ссылки Войди или Зарегистрируйся
Вообще пхп может для файловой системы почти всё, кроме нормальной архивации гигабайтов мелких файлов (таймаут, фиговые архиваторные либы). Ну и надо учитывать что пхп тормоз - шелл на перле откроет каталог где стопицоттыщ картинок в разы быстрее чем аналогичный шелл на пхп (пхпня запросто сдохнет до кучи ещё и по памяти).

Теперь virtual. Как это всё хозяйство работает для php SAPI и работает ли вообще - без понятия :crazy: Из нормальной папки нормального апача на среднестатистическом хостинге перловые скрипты сами собой не работают и virtual не сможет дернуть нерабочий перловый скрипт нормально. Так что до кучи в папке должно быть .htaccess с чем то вроде

Options Indexes FollowSymLinks ExecCGI
AddHandler cgi-script .cgi .pl

В самом перле никаких \r а сплошные \n
В заголовок до кучи -w и тд
Типа этого
Код:
#!/usr/bin/perl -w
print "Content-type: text/html\n\n";
# Дальше выводим тело документа.
print "It works!";
Чмод на перловый скрипт 0755, сама папка где он валяется обычно не должна быть 0777 (ошибка 500 будет)

Или это каталог cgi-bin, тогда наоборот пхпня часто работает оттуда достаточно загадочно, если вообще работает.

Тогда вот эту перловку можно дёрнуть из пхп примерно так
PHP:
<?php
error_reporting(7);
ini_set("max_execution_time",0);
ini_set("default_socket_timeout",5);
$testfile="test.pl";
virtual(dirname($_SERVER["PHP_SELF"])."/".$testfile);
 
?>
 
Назад
Сверху