В настоящее время я пытаюсь проанализировать файл.proto в php. Я пытался использовать DrSlump Protobuf Parser, но либо мои знания слишком малы, либо у моего Godaddy Shared Hosting что-то не хватает. Я пробовал все с моими знаниями без успеха, чтобы получить то, что хочу.
Итак, мой вопрос, есть ли пошаговое руководство о том, как это сделать?
У меня прототип установлен с 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 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, вы можете запустить: ./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
.
Удачи