已安装 PDFLib 但在代码中不可用或无法通过 phpinfo() 看到
PDFLib installed but not available in code or visible through phpinfo()
我认为我在系统 (Ubuntu 18.04) 上安装 PDFlib 方面做得很好,但还不完全正确。到目前为止我做了什么:
- 按照此处的说明进行操作:https://www.pdflib.com/fileadmin/pdflib/pdf/support/PDFlib-in-PHP-HowTo.pdf
- 下载了正确的
php_pdflib.so
文件并将其放在我通过phpinfo()
得到的扩展目录中
- 在我的
php.ini
中添加了 extension=php_pdflib.so
- 运行 a
sudo systemctl restart apache2
重新启动 Apache 并重新加载扩展
检查 php -i | grep PDF
是否加载了二进制文件,结果似乎是肯定的
PDFlib
PDFlib Support => enabled
PDFlib GmbH Binary-Version => 9.2.0
现在,当我从 Web 端 运行 phpinfo();
通过文件时,根本没有提到 PDFlib。当我通过 CLI 运行 它时,一切似乎都很好。
我还尝试通过 CLI 和 Web 创建一个新的 PDFlib() 实例。 CLI 有效,网络无效。
我是不是在安装过程中遗漏了什么?
I also tried creating a new PDFlib() instance through CLI and web. CLI works, web doesn't.
这是一个典型的情况。 Web 服务器中的 PHP CLI 和 PHP 可以有不同的配置。因此,请检查 extension_dir 以及加载到您的网络服务器 phpinfo() 输出中的 php.ini。然后你做了同样的配置。请同时检查 PHP/Webserver 日志文件中是否有任何错误消息。也许它也可能是 NTS/TS(线程)问题,但这会在错误消息中提到。
今天不是一个好的工程师,我同时做了几件事,所以我不知道最后到底是什么。尽管如此,我还是会写下我的步骤,因为它现在有效。
- 我通过
php -i
和 phpinfo();
仔细检查了配置文件路径和文件,以了解 CLI 和 Web 前端之间的区别。
- 我从两个 php.ini 文件中删除了
extension=php_pdflib
- 我将
php_pdflib.so
从扩展目录移到了上一层,它现在直接位于 /usr/lib/php
- 我也将它重命名为
phplib.so
(但那更多是为了故意破坏,看看会发生什么
- 我在
/etc/php/7.3/fpm/conf.d
中创建了一个 30-pdflib.ini
文件,并在其中只写了 extension=/usr/lib/php/pdflib.so
- 将该行添加到
/etc/php/7.3/cli/php.ini
以查看是否存在差异
- 我尝试重启 Apache2 几次,但是
phpinfo()
加载的配置文件或模块没有显示任何变化
- 我做了一个
sudo reboot
- 再次检查,现在为 CLI 和 web 加载了 PDFlib
所以,不确定硬重启是否真的解决了这个问题,但在我看来是这样。也许这对其他人有帮助。
我认为我在系统 (Ubuntu 18.04) 上安装 PDFlib 方面做得很好,但还不完全正确。到目前为止我做了什么:
- 按照此处的说明进行操作:https://www.pdflib.com/fileadmin/pdflib/pdf/support/PDFlib-in-PHP-HowTo.pdf
- 下载了正确的
php_pdflib.so
文件并将其放在我通过phpinfo()
得到的扩展目录中
- 在我的
php.ini
中添加了 - 运行 a
sudo systemctl restart apache2
重新启动 Apache 并重新加载扩展 检查
php -i | grep PDF
是否加载了二进制文件,结果似乎是肯定的PDFlib PDFlib Support => enabled PDFlib GmbH Binary-Version => 9.2.0
extension=php_pdflib.so
现在,当我从 Web 端 运行 phpinfo();
通过文件时,根本没有提到 PDFlib。当我通过 CLI 运行 它时,一切似乎都很好。
我还尝试通过 CLI 和 Web 创建一个新的 PDFlib() 实例。 CLI 有效,网络无效。
我是不是在安装过程中遗漏了什么?
I also tried creating a new PDFlib() instance through CLI and web. CLI works, web doesn't.
这是一个典型的情况。 Web 服务器中的 PHP CLI 和 PHP 可以有不同的配置。因此,请检查 extension_dir 以及加载到您的网络服务器 phpinfo() 输出中的 php.ini。然后你做了同样的配置。请同时检查 PHP/Webserver 日志文件中是否有任何错误消息。也许它也可能是 NTS/TS(线程)问题,但这会在错误消息中提到。
今天不是一个好的工程师,我同时做了几件事,所以我不知道最后到底是什么。尽管如此,我还是会写下我的步骤,因为它现在有效。
- 我通过
php -i
和phpinfo();
仔细检查了配置文件路径和文件,以了解 CLI 和 Web 前端之间的区别。 - 我从两个 php.ini 文件中删除了
extension=php_pdflib
- 我将
php_pdflib.so
从扩展目录移到了上一层,它现在直接位于/usr/lib/php
- 我也将它重命名为
phplib.so
(但那更多是为了故意破坏,看看会发生什么 - 我在
/etc/php/7.3/fpm/conf.d
中创建了一个30-pdflib.ini
文件,并在其中只写了extension=/usr/lib/php/pdflib.so
- 将该行添加到
/etc/php/7.3/cli/php.ini
以查看是否存在差异 - 我尝试重启 Apache2 几次,但是
phpinfo()
加载的配置文件或模块没有显示任何变化 - 我做了一个
sudo reboot
- 再次检查,现在为 CLI 和 web 加载了 PDFlib
所以,不确定硬重启是否真的解决了这个问题,但在我看来是这样。也许这对其他人有帮助。