use SwooleCli\Preprocessor;
use SwooleCli\Extension;
return function (Preprocessor $p) {
$p->addExtension(
(new Extension('oci8'))
->withHomePage('https://www.php.net/oci8')
->withOptions('--with-oci8=instantclient,' . ORACLEINSTANTCLIENT_PREFIX)
->withDependentLibraries('oracleinstantclient')
);
};
2. 这是 `builder/library` 目录下的 `oracleinstantclient.php` :
```php
<?php
use SwooleCli\Library;
use SwooleCli\Preprocessor;
return function (Preprocessor $p) {
$oracleinstantclient_prefix = ORACLEINSTANTCLIENT_PREFIX;
$p->addLibrary(
(new Library('oracleinstantclient'))
->withHomePage('https://www.oracle.com/database/technologies/instant-client.html')
->withLicense('https://www.oracle.com/downloads/licenses/instant-client-lic.html', Library::LICENSE_SPEC)
->withUrl('https://download.oracle.com/otn_software/linux/instantclient/2340000/instantclient-basic-linux.x64-23.4.0.24.05.zip')
->withPrefix($oracleinstantclient_prefix)
// ->withConfigure(
// <<<EOF
// # Here you can put the configuration commands for oracleinstantclient
// # For example:
// # ./configure --prefix={$oracleinstantclient_prefix}
// EOF
// )
->withPkgName('oracleinstantclient')
->withBinPath($oracleinstantclient_prefix . '/bin/')
);
};
二、我在 ./make.sh all-library 阶段遇到的两个问题
第一个问题,下载的库的格式不是一个 tar archive。报错信息:oracleinstantclient tar: This does not look like a tar archive tar: Skipping to next header tar: Exiting with failure status due to previous errors [oracleinstantclient] [configure FAILURE]。 关于这个问题,应该是因为我下载的 Oracle Instant Client 的文件格式不是一个 .tar.gz 文件格式导致的(网上找不到 .tar.gz 格式的 Oracle 客户端库。我想到的办法是,将 .zip 转换到 .tar.gz 格式。然后再修改下面这个地方:
通过这种操作,确实不会报 not look like a tar archive tar 的错误了
一、以下是我这里写的这个用的 PHP:
builder/extension
目录下的oci8.php
:use SwooleCli\Preprocessor; use SwooleCli\Extension;
return function (Preprocessor $p) { $p->addExtension( (new Extension('oci8')) ->withHomePage('https://www.php.net/oci8') ->withOptions('--with-oci8=instantclient,' . ORACLEINSTANTCLIENT_PREFIX) ->withDependentLibraries('oracleinstantclient') ); };
二、我在
./make.sh all-library
阶段遇到的两个问题第一个问题,下载的库的格式不是一个
通过这种操作,确实不会报
tar archive
。报错信息:oracleinstantclient tar: This does not look like a tar archive tar: Skipping to next header tar: Exiting with failure status due to previous errors [oracleinstantclient] [configure FAILURE]
。 关于这个问题,应该是因为我下载的Oracle Instant Client
的文件格式不是一个.tar.gz
文件格式导致的(网上找不到.tar.gz
格式的 Oracle 客户端库。我想到的办法是,将.zip
转换到.tar.gz
格式。然后再修改下面这个地方:not look like a tar archive tar
的错误了第二个问题,在我的
这个问题就不知道怎么解决了。因为 Oracle 提供的
oracleinstantclient
库里面找不到Makefile
文件。报错信息如下图:Oracle Instant Client
库应该是一个预编译的直接可供oci8
和pdo_oci
扩展使用的库,不需要(同时无法)再次去编译吧,所以也就没有所谓的Makefile
文件?那么是否可以说对于oci8
扩展和oracle instant client
库而言,应该跳过make all-library
这个编译库的步骤 直接到 编译配置、构建和打包的环节呢?但是我又不知道应该具体怎样去操作。