Такой вопрос, можно ли вызвать библиотеку, написанную на сях плюсах из когда PHP минуя промежуточный ехешник?
Задача стоит в переписывании программного комплекса десктоп в веб-интерфейс, есть библа, которая предоставляет функции для криптозащиты, никто ее менять не собирается, поэтому предлагать что-то другое не нужно, задача поставлена сделать это уже с имеющейся библой. Направьте пожалуйста на целевые ресурсы, где можно поработать с виндовыми библиотеками в PHP, что для этого нужно сделать, заранее благодарю
P.S. Поиск юзал, в найденных темах идет речь о подключении экстеншенов PHP, но это не то, экстеншены написаны по особым правилам и к ним есть специальные требования, а у меня dll как есть, исходников к ней нет, написана на Си, нужно вызвать функции оттуда используя код PHP, если это невозможно сделать, то опишите причину, если можно, ибо в PHP я не силен, но задача стоит использовать PHP, и ничего тут не поделать
Спустя 6 минут, 49 секунд (15.11.2011 - 20:20) vital написал(а):
Cкажите шефу - что он нихрен не понимающий мудак, раз ставит такие задачи. Он у вас 100% юрист или бухгалтер.
А по делу.. Если библа - COM объект, то можно грузить как COM (на вин платформе конечно)
Ну собственно и все.. Больше в голову сходу ничего не приходит.
ЧТо-то я видел такое.. на давно(
А по делу.. Если библа - COM объект, то можно грузить как COM (на вин платформе конечно)
Ну собственно и все.. Больше в голову сходу ничего не приходит.
ЧТо-то я видел такое.. на давно(
Спустя 1 минута, 42 секунды (15.11.2011 - 20:22) vital написал(а):
Есть еще вариант юзать аля
Но о5 же это все должно быть предусмотрено(
$results = file("http://www.myserver.com/scripts/foo.dll?param1=value1¶m2=value2");
Но о5 же это все должно быть предусмотрено(
Спустя 2 минуты, 13 секунд (15.11.2011 - 20:24) vital написал(а):
Как воркэраун проблемы можно сделать вот что(у вас ведь свой сервер, верно?)
Если есть права к системе и есть возможность использовать ф-ии аля shell_exec() system()
то напишите екзешник, к-й будет дергать нужные ф-ии из длл и возвращать рез-т в stdout, к-й и ловите на пхп. И тупо екзекайте его.
Если есть права к системе и есть возможность использовать ф-ии аля shell_exec() system()
то напишите екзешник, к-й будет дергать нужные ф-ии из длл и возвращать рез-т в stdout, к-й и ловите на пхп. И тупо екзекайте его.
Спустя 41 минута, 36 секунд (15.11.2011 - 21:06) InfoMaster написал(а):
сервер свой, у меня пока идей кроме идеи с COM-интерфейсом нет, промежуточный ехешник я так понял их не устраивает, хотя по-моему в данной ситуации самый адекватный выход
с COM-объектом - я не уверен, потому что не писал ничего такого, если бы приблизительно знать архитектуру сей идеи, можно было бы хотя бы отчитаться начальству о том, чем вообще это грозит, пока на повестке предложений 2 и еще 3-е туманное с COM-интерфейсом
1. Промежуточный ехешник
2. Попросить разрабов библиотеки (а она как видно разрабатывалась именно для нужд данного предприятия) переписать ее как PHP-шный экстеншн
с COM-объектом - я не уверен, потому что не писал ничего такого, если бы приблизительно знать архитектуру сей идеи, можно было бы хотя бы отчитаться начальству о том, чем вообще это грозит, пока на повестке предложений 2 и еще 3-е туманное с COM-интерфейсом
1. Промежуточный ехешник
2. Попросить разрабов библиотеки (а она как видно разрабатывалась именно для нужд данного предприятия) переписать ее как PHP-шный экстеншн
Спустя 35 минут, 36 секунд (15.11.2011 - 21:41) bodja написал(а):
Если свой сервер ,то и ПХП не нужен.
если знаете как с dll работать то научитесь и с winsock-ом работать.
если знаете как с dll работать то научитесь и с winsock-ом работать.
Спустя 1 час, 22 минуты, 20 секунд (15.11.2011 - 23:04) InfoMaster написал(а):
bodja, ну если я вас правильно понял
однако сервер не один, и гарантировать что где-нибудь в другом городе будет стопроцентно стоять виндовый сервер никто не может, на nix-ах такой трюк не пройдет, постановка задачи нацелена на программное обращение к библиотеке, но спасибо за ответ)
однако сервер не один, и гарантировать что где-нибудь в другом городе будет стопроцентно стоять виндовый сервер никто не может, на nix-ах такой трюк не пройдет, постановка задачи нацелена на программное обращение к библиотеке, но спасибо за ответ)
Спустя 1 час, 51 минута, 20 секунд (16.11.2011 - 00:55) bodja написал(а):
Ну сервер- это любая программа ,которая способна слушать порт.
Это необязательно апач или пхп или что то другое.
Если мы говорим про длл ,то мы скорее всего говорим про винду ,
на nix-ах немного по другому,хотя и в ту же степь.
Длл работает в среде ОС ,а пхп ,ява ,флеш,брузеры- они работают в своих сандбоксах и требуют своих нативных библиотек не случайно.
Получить доступ к такой Длл ,то же самое ,что получить полный контроль над ОС.
Поэтому без специальных костылей соединить ПХП с Длл не получится.
Хотя и незачем,то же самое,что соединять помидор с топором.
Это необязательно апач или пхп или что то другое.
Если мы говорим про длл ,то мы скорее всего говорим про винду ,
на nix-ах немного по другому,хотя и в ту же степь.
Длл работает в среде ОС ,а пхп ,ява ,флеш,брузеры- они работают в своих сандбоксах и требуют своих нативных библиотек не случайно.
Получить доступ к такой Длл ,то же самое ,что получить полный контроль над ОС.
Поэтому без специальных костылей соединить ПХП с Длл не получится.
Хотя и незачем,то же самое,что соединять помидор с топором.
Спустя 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 отличаются лишь каким-нибудь заголовком, прощу прощение. если некорректно использую определения
Вообщем либа будет вешаться на клиенте и вызов этой либы из веба подразумевало не использование ПХП и работу с оной на серваке, а вызов функций на клиенте через 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? И то если секюрити браузера пользователя разрешить его запустить.
Чего такого будет делать либа чтобы ее тащить через инет на комп юзера? Шариться по его реестру и почтовым ящикам?
Вася, а ты вообще в курсах что activex - это только IE? И то если секюрити браузера пользователя разрешить его запустить.
Чего такого будет делать либа чтобы ее тащить через инет на комп юзера? Шариться по его реестру и почтовым ящикам?
Спустя 14 минут, 11 секунд (17.11.2011 - 00:18) InfoMaster написал(а):
caballero
Либа будет висеть на компах изначально, это для внутренних нужд документооборота, обычные смертные сюда не учитываются, настройку IE заранее будут производить на всех машинах, где будет обрабатываться файл
Либа будет висеть на компах изначально, это для внутренних нужд документооборота, обычные смертные сюда не учитываются, настройку 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 например активиксы делаются легко, Хотя не представляяю себе какой нужен функционал чтобы его засовывать в либу и юзать с браузера а не работать по человечески. |
Ну там какая-то криптографическая тулза. Шифрует че-то, ЭЦП какие-нить.
Изначально же не планировали так.
А сейчас начальство жмется на выделить денег на программиста, что бы переписать нормально.. Это нормально Вот и приходится страдать геммороем подчиненым.
Самое печальное, что потом начальство все-равно выделит денег, когда поймет что эта фигня нормально работать не может.
..Так оно всегда бывает)
Спустя 2 минуты, 8 секунд (17.11.2011 - 00:33) InfoMaster написал(а):
caballero
Вы вроде как прошаренный человек, но почему-то считаете что ТЗ пишут разработчики а не кто-то там, кого мы собственно не всегда и в глаза то видим)) я предлагал забить на это и сделать WinForms обычную прилагу да и не выдумывать геморой, было и иное предложение - отдать на разработку нужной библы тем, кто написал текущую, но денег не хотят за это платить, по сему этим гемороем буду заниматься я
P.S. Ребят, всем большое спасибо за консультацию, дальше я думаю сам, да прибудет с вами сила))
Вы вроде как прошаренный человек, но почему-то считаете что ТЗ пишут разработчики а не кто-то там, кого мы собственно не всегда и в глаза то видим)) я предлагал забить на это и сделать WinForms обычную прилагу да и не выдумывать геморой, было и иное предложение - отдать на разработку нужной библы тем, кто написал текущую, но денег не хотят за это платить, по сему этим гемороем буду заниматься я
P.S. Ребят, всем большое спасибо за консультацию, дальше я думаю сам, да прибудет с вами сила))
Спустя 43 секунды (17.11.2011 - 00:33) InfoMaster написал(а):
vital
опередили меня с ответом)) спасибо за понимание))
опередили меня с ответом)) спасибо за понимание))
Спустя 17 минут, 35 секунд (17.11.2011 - 00:51) bodja написал(а):
Значит так,есть два пути.
1 Делаем активикс прокладку,
если делать быстро и козырно,значит качаем VB6 ,ставим ,запускаем ,жмакаем иконку создать активикс,ну и потом тупо декларируем функции дллки ,пишем свои,и тупо занимаемся перебросом данных.Жмем кнопку "маке" и активикс готов.
Дальше я думаю не нужно обьяснять как подключать к скрипту брузера.
2 Лезем в гугл ,я видел уже такое решение с готовым активиксом под любую длл-ку,
но уже не вспомню,если найду на компе у себя,скину.
1 Делаем активикс прокладку,
если делать быстро и козырно,значит качаем VB6 ,ставим ,запускаем ,жмакаем иконку создать активикс,ну и потом тупо декларируем функции дллки ,пишем свои,и тупо занимаемся перебросом данных.Жмем кнопку "маке" и активикс готов.
Дальше я думаю не нужно обьяснять как подключать к скрипту брузера.
2 Лезем в гугл ,я видел уже такое решение с готовым активиксом под любую длл-ку,
но уже не вспомню,если найду на компе у себя,скину.
Спустя 7 минут, 38 секунд (17.11.2011 - 00:59) bodja написал(а):
Спустя 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 написал(а):
спасибо за помощь, парни, если ВДРУГ возникнуть вопросы дополнительные, я бы с радостью посоветовался)