“Message.proto”中找不到“Google \ Protobuf \ Internal \ Message”类

时间:2017-05-20 20:51:29

标签: php docker protocol-buffers pecl protoc

我正在使用protocol buffers开发一个项目,在我编译了一个原型文件之后,我似乎无法将它包括在内,因为它不断给我这个确切的错误: try { $conn = new PDO("mysql:host=$servername", $username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // create database $db_query = $conn->prepare("CREATE DATABASE IF NOT EXISTS ?"); $db_query->execute([$myDB]); } catch(PDOException $e) { echo "<br>" . $e->getMessage(); }

PHP Fatal error: Class 'Google\Protobuf\Internal\Message' not found in /app/generated_files/message.php on line 13我有message.php文件中的自动生成文件,其中包含.proto

在阅读protobuf github issues时,我发现一个人有同样的问题,他断定这是作曲家的错。但是在我的情况下,这不是问题,因为我没有使用作曲家。

我使用pecl来安装协议缓冲区,我的库Google\Protobuf\Internal\Message位于protobuf.so。我还在php.ini的最后一行添加了/etc/php5/apache2/XXXXXXXXX

请记住,我正在使用docker处理所有事情,因此它可能会有所不同,但我仍然怀疑。

2 个答案:

答案 0 :(得分:1)

万一有人在这里遇到同样的问题:您只需要在文件include_once './vendor/autoload.php';中添加componser自动加载器即可(根据需要更改路径)

答案 1 :(得分:0)

我遇到了同样的问题,但原因对我来说却不同: Git以某种方式弄乱了文件夹的大小写,这导致了错误的文件路径转换。 固定外壳后([...] / src / Google / Protobuf而不是供应商文件夹中的[...] / src / google / protobuf)