В настоящее время я пытаюсь разобрать файл .proto в php. Я пытался использовать DrSlump’s Protobuf Parser
но либо мои знания слишком малы, либо в моем общем хостинге Godaddy чего-то не хватает. Я попробовал все со своими знаниями без успеха, чтобы получить то, что я хочу.
Итак, мой вопрос, есть ли пошаговое руководство о том, как заставить это работать?
У меня есть протокол с SSH, а также установлен
pear channel-discover pear.pollinimini.net
pear install drslump/Protobuf-beta
Текущий номер:
root@v0071:~/Root/var/www/xxx.com/web/test# protoc-gen-php
Protobuf-PHP 0.9.4 by Ivan -DrSlump- Montes
Error: You must provide at least 1 argument.
Type "/usr/bin/protoc-gen-php --help" to get help.
root@v0071:~/Root/var/www/xxx.com/web/test# php protoc-gen-php.php LandData.proto
Protobuf-PHP @package_version@ by Ivan -DrSlump- Montes
/var/www/clients/client1/web10/web/test/LandData.proto:
File does not reside within any path specified using --proto_path (or -I).
You must specify a --proto_path which encompasses this file.
Note that the proto_path must be an exact prefix of
the .proto file names --protoc is too dumb to figure out when two
paths (e.g. absolute and relative) are equivalent
(it's harder than you think).
ERROR: protoc exited with an error (1) when executed with:
protoc \--plugin=protoc-gen-php='/var/www/clients/client1/
web10/web/test/protoc-gen-php.php' \
--proto_path='/var/www/clients/client1/web10/web/test/
library/DrSlump/Protobuf/Compiler/protos' \--php_out=':./' \
'/var/www/clients/client1/web10/web/test/LandData.proto'
Хотя вопрос старый, я подумал ответить, и, возможно, кто-то найдет его полезным.
Сначала я бы порекомендовал вам использовать официальную библиотеку из Protobuf
GitHub хранилище.
Итак, я понимаю, что вы пытаетесь сгенерировать предложения PHP из файла прото. Для этого вы должны сначала установить компилятор протокола буфера (protoc). В конце ссылки вы можете найти релизы.
Самый простой способ установки protoc
с помощью двоичных файлов, а затем вы можете скомпилировать файл, как только вы в "/protobufBinaries/bin"
и вы найдете protoc
там.
Теперь, когда у вас есть протокол, вы можете запустить: ./protoc --php_out=/var/www/html/generated_files /var/www/html/proto/example.proto --proto_path=/var/www/html/proto
ПРИМЕЧАНИЕ. Не забудьте указать —proto_path, иначе это приведет к ошибке. Вам нужно указать тот же путь, но не обязательно включать файл. You must specify a --proto_path which encompasses this file.
В моем случае классы были созданы в /var/www/html/generated_files
,
Удачи
Других решений пока нет …