[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вызов dll из PHP
InfoMaster
Ребят, всем доброго времени суток
Такой вопрос, можно ли вызвать библиотеку, написанную на сях плюсах из когда PHP минуя промежуточный ехешник?
Задача стоит в переписывании программного комплекса десктоп в веб-интерфейс, есть библа, которая предоставляет функции для криптозащиты, никто ее менять не собирается, поэтому предлагать что-то другое не нужно, задача поставлена сделать это уже с имеющейся библой. Направьте пожалуйста на целевые ресурсы, где можно поработать с виндовыми библиотеками в PHP, что для этого нужно сделать, заранее благодарю

P.S. Поиск юзал, в найденных темах идет речь о подключении экстеншенов PHP, но это не то, экстеншены написаны по особым правилам и к ним есть специальные требования, а у меня dll как есть, исходников к ней нет, написана на Си, нужно вызвать функции оттуда используя код PHP, если это невозможно сделать, то опишите причину, если можно, ибо в PHP я не силен, но задача стоит использовать PHP, и ничего тут не поделать



Спустя 6 минут, 49 секунд (15.11.2011 - 20:20) vital написал(а):
Cкажите шефу - что он нихрен не понимающий мудак, раз ставит такие задачи. Он у вас 100% юрист или бухгалтер.

А по делу.. Если библа - COM объект, то можно грузить как COM (на вин платформе конечно)

Ну собственно и все.. Больше в голову сходу ничего не приходит.
ЧТо-то я видел такое.. на давно(

Спустя 1 минута, 42 секунды (15.11.2011 - 20:22) vital написал(а):
Есть еще вариант юзать аля
$results = file("http://www.myserver.com/scripts/foo.dll?param1=value1&param2=value2");

Но о5 же это все должно быть предусмотрено(

Спустя 2 минуты, 13 секунд (15.11.2011 - 20:24) vital написал(а):
Как воркэраун проблемы можно сделать вот что(у вас ведь свой сервер, верно?)
Если есть права к системе и есть возможность использовать ф-ии аля shell_exec() system()
то напишите екзешник, к-й будет дергать нужные ф-ии из длл и возвращать рез-т в stdout, к-й и ловите на пхп. И тупо екзекайте его.

Спустя 41 минута, 36 секунд (15.11.2011 - 21:06) InfoMaster написал(а):
сервер свой, у меня пока идей кроме идеи с COM-интерфейсом нет, промежуточный ехешник я так понял их не устраивает, хотя по-моему в данной ситуации самый адекватный выход

с COM-объектом - я не уверен, потому что не писал ничего такого, если бы приблизительно знать архитектуру сей идеи, можно было бы хотя бы отчитаться начальству о том, чем вообще это грозит, пока на повестке предложений 2 и еще 3-е туманное с COM-интерфейсом

1. Промежуточный ехешник
2. Попросить разрабов библиотеки (а она как видно разрабатывалась именно для нужд данного предприятия) переписать ее как PHP-шный экстеншн

Спустя 35 минут, 36 секунд (15.11.2011 - 21:41) bodja написал(а):
Если свой сервер ,то и ПХП не нужен. wink.gif
если знаете как с dll работать то научитесь и с winsock-ом работать.

Спустя 1 час, 22 минуты, 20 секунд (15.11.2011 - 23:04) InfoMaster написал(а):
bodja, ну если я вас правильно понял
однако сервер не один, и гарантировать что где-нибудь в другом городе будет стопроцентно стоять виндовый сервер никто не может, на nix-ах такой трюк не пройдет, постановка задачи нацелена на программное обращение к библиотеке, но спасибо за ответ)

Спустя 1 час, 51 минута, 20 секунд (16.11.2011 - 00:55) bodja написал(а):
Ну сервер- это любая программа ,которая способна слушать порт.
Это необязательно апач или пхп или что то другое.
Если мы говорим про длл ,то мы скорее всего говорим про винду ,
на nix-ах немного по другому,хотя и в ту же степь.
Длл работает в среде ОС ,а пхп ,ява ,флеш,брузеры- они работают в своих сандбоксах и требуют своих нативных библиотек не случайно.
Получить доступ к такой Длл ,то же самое ,что получить полный контроль над ОС.
Поэтому без специальных костылей соединить ПХП с Длл не получится.
Хотя и незачем,то же самое,что соединять помидор с топором. biggrin.gif

Спустя 1 час, 15 минут, 4 секунды (16.11.2011 - 02:10) caballero написал(а):
Цитата
сервер свой, у меня пока идей кроме идеи с COM-интерфейсом нет, промежуточный ехешник я так понял их не устраивает, хотя по-моему в данной ситуации самый адекватный выход


это единственный выход если не COM сервер и не перекомпиливать PHP.


Цитата
на nix-ах такой трюк не пройдет

там никакой трюк не пройдет - надо портировать и перекомпилиывать под никсовую либу.


я уже не говорю что либа должна быть написана грамотно с учетом потокобезопасности и кучи всего




Спустя 20 часов, 17 минут, 13 секунд (16.11.2011 - 22:27) InfoMaster написал(а):
Ребят, спасибо вам за ответы, сегодня начальство несколько "уточнило ТЗ"))) внезапно!
Вообщем либа будет вешаться на клиенте и вызов этой либы из веба подразумевало не использование ПХП и работу с оной на серваке, а вызов функций на клиенте через JavaScript, я немного покурил интернет, дела обстоят так - через JS я могу выдернуть функции из библиотек ActiveX, данная библа таковой не является, отсюда вопрос, можно ли обернуть ее в какой-нибудь wrapper чтобы дергать некий абстрактный интерфейс а наполнение оставить прежним?

P.S. Могу сильно заблуждаться, но предполагаю что ActiveX и стандартная виндовая dll отличаются лишь каким-нибудь заголовком, прощу прощение. если некорректно использую определения

Спустя 48 минут, 55 секунд (16.11.2011 - 23:16) vital написал(а):
Цитата (InfoMaster @ 16.11.2011 - 21:27)
Ребят, спасибо вам за ответы, сегодня начальство несколько "уточнило ТЗ"))) внезапно!
Вообщем либа будет вешаться на клиенте и вызов этой либы из веба подразумевало не использование ПХП и работу с оной на серваке, а вызов функций на клиенте через JavaScript, я немного покурил интернет, дела обстоят так - через JS я могу выдернуть функции из библиотек ActiveX, данная библа таковой не является, отсюда вопрос, можно ли обернуть ее в какой-нибудь wrapper чтобы дергать некий абстрактный интерфейс а наполнение оставить прежним?

P.S. Могу сильно заблуждаться, но предполагаю что ActiveX и стандартная виндовая dll отличаются лишь каким-нибудь заголовком, прощу прощение. если некорректно использую определения

Примерно так. Дергайте ф-ии из длл, из активикс, из яваскрипт.

Вот только и длл, и активикс тогда должны быть на вин компе каждого его пользователя, если мне не изменяет память.

Спустя 19 минут, 20 секунд (16.11.2011 - 23:35) InfoMaster написал(а):
Это понятно что должны быть на компе, непонятно другое, как крутить к dll ActiveX обертку? Может у вас есть линки на материал по данной теме, я буду очень признателен

Спустя 3 минуты, 21 секунда (16.11.2011 - 23:39) vital написал(а):
Ну пишете обычный активиксх, на обычном С++, которым обычным для него(С++) путем экспортруете ф-и из длл.

Как написать активикс, и как вызвать ф-ю из длл гуглится на раз. По отдельности конечно)

Спустя 24 минуты, 58 секунд (17.11.2011 - 00:04) caballero написал(а):
InfoMaster
Вася, а ты вообще в курсах что activex - это только IE? И то если секюрити браузера пользователя разрешить его запустить.
Чего такого будет делать либа чтобы ее тащить через инет на комп юзера? Шариться по его реестру и почтовым ящикам?

Спустя 14 минут, 11 секунд (17.11.2011 - 00:18) InfoMaster написал(а):
caballero
Либа будет висеть на компах изначально, это для внутренних нужд документооборота, обычные смертные сюда не учитываются, настройку IE заранее будут производить на всех машинах, где будет обрабатываться файл

Спустя 9 минут, 56 секунд (17.11.2011 - 00:28) caballero написал(а):
тогда никаки проблем - в делфи,сибилдере или VB например активиксы делаются легко,
Хотя не представляяю себе какой нужен функционал чтобы его засовывать в либу и юзать с браузера а не работать по человечески.

Спустя 2 минуты, 32 секунды (17.11.2011 - 00:30) vital написал(а):
Цитата (caballero @ 16.11.2011 - 23:28)
тогда никаки проблем - в делфи,сибилдере или VB например активиксы делаются легко,
Хотя не представляяю себе какой нужен функционал чтобы его засовывать в либу и юзать с браузера а не работать по человечески.

Ну там какая-то криптографическая тулза. Шифрует че-то, ЭЦП какие-нить.
Изначально же не планировали так.
А сейчас начальство жмется на выделить денег на программиста, что бы переписать нормально.. Это нормально wink.gif Вот и приходится страдать геммороем подчиненым.

Самое печальное, что потом начальство все-равно выделит денег, когда поймет что эта фигня нормально работать не может.

..Так оно всегда бывает)

Спустя 2 минуты, 8 секунд (17.11.2011 - 00:33) InfoMaster написал(а):
caballero
Вы вроде как прошаренный человек, но почему-то считаете что ТЗ пишут разработчики а не кто-то там, кого мы собственно не всегда и в глаза то видим)) я предлагал забить на это и сделать WinForms обычную прилагу да и не выдумывать геморой, было и иное предложение - отдать на разработку нужной библы тем, кто написал текущую, но денег не хотят за это платить, по сему этим гемороем буду заниматься я

P.S. Ребят, всем большое спасибо за консультацию, дальше я думаю сам, да прибудет с вами сила))

Спустя 43 секунды (17.11.2011 - 00:33) InfoMaster написал(а):
vital
опередили меня с ответом)) спасибо за понимание))

Спустя 17 минут, 35 секунд (17.11.2011 - 00:51) bodja написал(а):
Значит так,есть два пути.
1 Делаем активикс прокладку,
если делать быстро и козырно,значит качаем VB6 ,ставим ,запускаем ,жмакаем иконку создать активикс,ну и потом тупо декларируем функции дллки ,пишем свои,и тупо занимаемся перебросом данных.Жмем кнопку "маке" и активикс готов.
Дальше я думаю не нужно обьяснять как подключать к скрипту брузера.

2 Лезем в гугл ,я видел уже такое решение с готовым активиксом под любую длл-ку,
но уже не вспомню,если найду на компе у себя,скину.

Спустя 7 минут, 38 секунд (17.11.2011 - 00:59) bodja написал(а):
Гы... biggrin.gif
Вот оно
вызов функций Win 32 API

Спустя 3 минуты, 49 секунд (17.11.2011 - 01:02) vital написал(а):
Цитата
здесь (версия для Windows NT от 13.01.1999г

что-то мне ссыкотно

Спустя 6 минут, 30 секунд (17.11.2011 - 01:09) bodja написал(а):

Спустя 17 часов, 51 минута, 15 секунд (17.11.2011 - 19:00) InfoMaster написал(а):
спасибо за помощь, парни, если ВДРУГ возникнуть вопросы дополнительные, я бы с радостью посоветовался)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.