我们最近用Laravel Forge把我们的网站搬到了一个新的服务器上。一切都很顺利,除了我们不断得到"使用未定义的常量OCI_CRED_EXT"错误,因为oci8扩展似乎没有正确运行。运行"php -m | grep 'oci8';工作并回显oci8,因此扩展似乎正在运行,但当我们运行phpinfo()时,我们没有看到任何oci8配置。在该信息屏幕中,oci8仅在模块作者中列出。
我们按照这里的说明https://gist.github.com/Yukibashiri/cebaeaccbe531665a5704b1b34a3498e(确保使用"pecl install oci8-2.2.0"因此它适用于PHP 7.4)。之后,我们按照https://serverfault.com/questions/743976/how-to-detect-php-oracle-using-ubuntu-nginx-php7-fpm的建议在/etc/environment中添加一些环境变量。
运行Ubuntu 20.04 LTS, php 7.4, Laravel 6.2。在这一点上,我已经没有什么可尝试的了。如果有人有什么想法,那将是一个巨大的帮助。
如果OCI8在命令行中可用,但不是通过web请求,那么这意味着你没有配置Oracle环境变量和/或LD_LIBRARY_PATH为你的web服务器找到Oracle库和文件。如何设置这些取决于web服务器(和web服务器的版本),以及如何安装Oracle客户端库。使用即时客户端,您可能只使用安装说明中显示的ldconfig
方法,可能不需要设置任何其他变量。