微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 nginx 的 oci8 扩展使网关失效 - mac m1

如何解决使用 nginx 的 oci8 扩展使网关失效 - mac m1

抱歉解释不好和语法不好

➜  project-name PHP --version
PHP 7.4.16 (cli) (built: Mar  4 2021 12:36:48) ( NTS )
copyright (c) The PHP Group
Zend Engine v3.4.0,copyright (c) Zend Technologies
    with Zend OPcache v7.4.16,copyright (c),by Zend Technologies

and i was trying too with v8

➜  ~ PHP --version
PHP 8.0.7 (cli) (built: Jun  3 2021 19:10:37) ( NTS )
copyright (c) The PHP Group
Zend Engine v4.0.7,copyright (c) Zend Technologies
    with Zend OPcache v8.0.7,by Zend Technologies

在我尝试使用 3 个版本的 oracle Instant、sdk 之前

  • v11.1
  • v12.2
  • v19.8.0.0.0

我通过在命令需要 oci8 的地方运行 composer require yajra/laravel-oci8:^7 来检查我的 oci 是否正常工作。

➜  project-name pa package:discover --ansi
discovered Package: facade/ignition
discovered Package: fideloper/proxy
discovered Package: fruitcake/laravel-cors
discovered Package: laravel/tinker
discovered Package: nesbot/carbon
discovered Package: nunomaduro/collision
discovered Package: yajra/laravel-oci8
Package manifest generated successfully.

但是,,,

当我查看 PHPinfo() 时,我的页面正在运行 502 Bad Gateway Nginx/1.19.8

当我检查 oci_error() 时,响应是 false 这意味着没有错误,对吧?。

当我在 ;extension=oci8.so评论 PHP.ini 时 和

➜ project-name brew services restart PHP@7.4

PHPinfo() 可以工作,但我需要 oci_connect 函数

已经尝试过重启,关闭笔记本电脑,NginxPHP之类的任何服务,仍然没有解决

当我在 Nginx 或 valet 上检查我的日志时,没有错误或日志

/usr/local/var/log/Nginx
/opt/Nginx/logs/error.log

我的安装 oci8 步骤是 解压 oracle 包 (instant,sdk,sqlplus)

sudo ln -s /opt/instantclient_19_8/sdk/include/*.h /usr/local/include/
sudo ln -s /opt/instantclient_19_8/sqlplus /usr/local/bin/
sudo ln -s /opt/instantclient_19_8/*.dylib /usr/local/lib/
sudo ln -s /opt/instantclient_19_8/*.dylib.19.1 /usr/local/lib/
sudo ln -s /usr/local/lib/libocci.dylib.19.1 /usr/local/lib/libocci.dylib
sudo ln -s /usr/local/lib/libclntsh.dylib.19.1 /usr/local/lib/libclntsh.dylib

sudo pecl install oci8-2.2.0 我也试过 sudo pecl install oci8 for PHP8 version

我对oracle home的回复instantclient,/usr/local/lib

回复

Build process completed successfully
Installing '/opt/homebrew/Cellar/PHP@7.4/7.4.16/pecl/20190902/oci8.so'
install ok: channel://pecl.PHP.net/oci8-2.2.0
Extension oci8 enabled in PHP.ini

所以我改变了

extension_dir = "/opt/homebrew/Cellar/PHP@7.4/7.4.16/pecl/20190902"
;extension_dir = "/opt/homebrew/lib/PHP/20190902"

但在 PHP8 中我不需要更改目录。

我像上面检查的那样运行检查 oci。

screenshot when test oci

➜  ~ sudo Nginx -t
Nginx: the configuration file /opt/homebrew/etc/Nginx/Nginx.conf Syntax is ok
Nginx: configuration file /opt/homebrew/etc/Nginx/Nginx.conf test is successful

当我尝试使用 PHPinfo() 检查时,条件是 502 bad gateway -> 检查

<?PHP
if (oci_connect('xusername','xpassword','xip/XE','xcharset')) {
    print 'right';
} else {
    print 'error';
}
➜  oracle PHP -q b.PHP
dyld: lazy symbol binding Failed: Symbol not found: _OCIEnvNlsCreate
  Referenced from: /opt/homebrew/lib/PHP/pecl/20200930/oci8.so
  Expected in: flat namespace

dyld: Symbol not found: _OCIEnvNlsCreate
  Referenced from: /opt/homebrew/lib/PHP/pecl/20200930/oci8.so
  Expected in: flat namespace

[1]    35993 abort      PHP -q b.PHP

通过引用 https://theoldape.com/mac-os-x-php-with-oracle-oci8-extension/ 其意思是错误的操作系统版本。嗯 我在我的设备上使用 instantclient-basic-macos.x64-19.8.0.0.0dbru 进行了测试 mbp m1

仅在 https://www.oracle.com/database/technologies/instant-client/downloads.html 中 适用于 macOS (Intel x86) 的 Instant Client 和 Mac OS X 即时客户端 (PPC)

我发现的问题,和 dyld: lazy symbol binding failed for php oic8 on Apple M1

上的一样

我已经用 instantclient-sqlplus-macosx-10.1.0.3 解决了我的 PHPinfo()(Mac OS X (PPC) 的即时客户端) 所以我可以看到oci8的配置表

然后我尝试 PHP -i 我已经解决了没有像 on 那样的错误 dyld: lazy symbol binding failed for php oic8 on Apple M1 (dyld: lazy symbol binding Failed: Symbol not found: _OCIClientVersion),

但是当我尝试 ➜ oracle PHP -q b.PHP 我仍然收到错误 dyld:惰性符号绑定失败:找不到符号:_OCIEnvNlsCreate

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?