我正在使用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处理所有事情,因此它可能会有所不同,但我仍然怀疑。
答案 0 :(得分:1)
万一有人在这里遇到同样的问题:您只需要在文件include_once './vendor/autoload.php';
中添加componser自动加载器即可(根据需要更改路径)
答案 1 :(得分:0)
我遇到了同样的问题,但原因对我来说却不同: Git以某种方式弄乱了文件夹的大小写,这导致了错误的文件路径转换。 固定外壳后([...] / src / Google / Protobuf而不是供应商文件夹中的[...] / src / google / protobuf)