laeirbag Ответов: 0

Что (еще) можно сделать для того, чтобы расширение PHP_printer работало в php7?


Всем привет. Я заинтересован в создании и использовании php_printer.dll для php 7. Я знаю, что есть много обходных путей, но мне все равно хотелось бы сделать это возможным с помощью этого старого расширения.

У меня нет опыта разработки / обновления расширений и написания кода на этом уровне. Любая помощь/подсказка ценится, а также если я что-то упускаю для воспроизведения окружающей среды, не сомневайтесь, скажите мне. В конце концов, это то, что любой может использовать в ближайшем будущем.


Заранее спасибо. Желаю хорошо провести время.

Что я уже пробовал:

Я скачал файлы с http://svn.php.net/repository/pecl/printer/trunk/ . Ggenerated и используемые файлы находятся в https://github.com/laeirbag/StuffToShare .

Я также скачал дополнительные материалы, необходимые при настройке в командной строке visual studio 2015, плюс к обычным (исходный код php, deps, sdk и так далее):

гну Бизон с Win32
gnu win32 zip
re2c 0.13.4 (потому что он все еще требует его, даже когда более новая версия уже существует, но не распознает его при сборке и вводе в путь).
генератор парсера lemon (построен потому, что доступен только исходный код. Не путать с библиотекой лимона для общих структур и алгоритмов).

После этого я приступил к работе с ошибками таким образом...

1. - заменено zend_rsrc_list_entry на zend_resource вместо этого и ZEND_FETCH_RESOURCE( на zend_fetch_resource (, в соответствии с Дэвид Скляр слова. Также изменен zend_fetch_resource(ресурсы, структура, арг1,-1... быть zend_fetch_resource( арг1,Ресурс, 1, а понял.

2. - заменено Z_STRVAL_PP( должно быть Z_STRVAL_P( в соответствии с ссылка на github

3. - заменил все ZEND_REGISTRER_RESOURCE на zend_register_resource, потому что я не нашел заглавных ссылок.

4. - заменил каждый zend_list_delete(Z_RESVAL_PP на zend_list_close(Z_RES_P (acoording to еще одна ссылка на github

5. - заменено Z_LVAL_PP tp быть Z_LVAL_P (снова github)

6. - заменено Z_BVAL_PP( должно быть Z_DVAL_P( в соответствии с нить.

7. - не знал, что делать с new_value_length, поэтому просто прокомментировал строку.

8. - также заменил все звал * * на звал* . В противном случае любой вызов функции запаздывает.

9. - Он также используется для ссылки на некоторые несуществующие файлы в папку Release_TS. Я их создал.

Расширение может быть построено, перечислено в списке, показанном в информации. Но проблемы обнаруживаются.

printer_list() возвращает список со многими "неизвестными: 0" бесполезными именами, а printer_open () выдает ошибку, когда в параметре используется несуществующий принтер, и возвращает null, когда задано правильное имя, поэтому handle бесполезен для продолжения чего-либо.

Похоже, что настройки принтера по умолчанию в php.ini теперь бесполезны, насколько я знаю, поэтому printer_open без параметров вызывает упомянутую ошибку.

php_error_log помечает неизвестный тип записи списка (138416168) в неизвестной строке 0
и Маркс не смог подключиться к принтеру [\x01] (SOH или StartOfHeader) при вызове без параметров.

содержимое php_info тоже довольно странное.

Все еще остается вопрос о том, что может быть заменой new_value_length и что еще должно быть заменено/улучшено.

ZahidNaseem

Интересно, есть ли у вас решение для принтера в PHP7

0 Ответов