Что (еще) можно сделать для того, чтобы расширение 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