我正在尝试使用以下软件包将oracle数据库连接到我的laravel应用程序:https://github.com/yajra/laravel-oci8,但外部连接有错误,这是错误:
这是软件包中的错误行:https://github.com/yajra/laravel-oci8/blob/5.8/src/Oci8/Connectors/OracleConnector.php#L35
macOS Mojave Version 10.14.4 (18E226)
7.3
5.8.*
5.8.*
有人可以帮助我吗?
答案 0 :(得分:0)
好像缺少OCI8扩展的预定义常量。确保OCI8扩展名是
已正确编译为PHP(请参见https://www.orware.com/blog/tips-and-how-tos/oracle/oracle-oci8-php-installation)
在运行时动态加载。您可以在脚本中进行检查,并在此处显示如何执行此操作的示例:https://www.sitepoint.com/php-extension-not-loaded/
答案 1 :(得分:0)
令人沮丧的是,关于如何进行此安装的教程少之又少,这导致在新服务器上安装此程序时很头疼。
所以,这里有一个关于如何在 ubuntu 20.04 服务器上安装它的快速纲要。
编辑:我没有 Mac...
...但命令应该非常相似。至少,一个快速的谷歌会打开一些关于安装先决条件的教程。
您可能还需要弄清楚不同的 php 安装位置(/etc/php 用于 linux)
以下是有关 php 扩展安装的教程,了解其中一些细节:https://affinitybridge.com/blog/adding-php-extensions-system-php-under-os-x-1015-catalina
请注意,您可能使用不同的 Instantclient 和 PHP 版本
先决条件:
apt-get install unzip php-pear php7.4-dev
unzip /instantclient-basic.zip -d /opt/oracle
unzip /instantclient-sdk.zip -d /opt/oracle
ln -s /opt/oracle/instantclient_11_2/libclntsh.so.11.1 /opt/oracle/instantclient_11_2/libclntsh.so
ln -s /opt/oracle/instantclient_11_2/libocci.so.11.1 /opt/oracle/instantclient_11_2/libocci.so
echo 'extension=oci8.so' > /etc/php/7.4/mods-available/oci.ini
ln -s /etc/php/7.4/mods-available/oci.ini /etc/php/7.4/cli/conf.d/10-oci8.ini
ln -s /etc/php/7.4/mods-available/oci.ini /etc/php/7.4/fpm/conf.d/10-oci8.ini
ORACLE_HOME=/opt/oracle/instantclient_11_2/
LD_LIBRARY_PATH=/opt/oracle/instantclient_11_2/
echo "instantclient,$ORACLE_HOME" | pecl install oci8-2.2.0
echo $ORACLE_HOME > /etc/ld.so.conf.d/oracle-instantclient.conf
ldconfig
rm -rf /instantclient-*.zip \
我一直被挂断的问题与仅设置 php cli 或 php fpm 的扩展有关,而不是两者。如果您没有为两者都设置它,您将在某处看到 OCI 常量错误。
所以,不要跳过第 5 步。;)
PS 如果您发现自己对某事感到厌烦,让我们一起努力更新此答案,以便我们都能更快乐地安装此扩展程序。