1. 程式人生 > 其它 >Centos7x php7.2安裝sapnwrfc拓展 對接sap【轉載】

Centos7x php7.2安裝sapnwrfc拓展 對接sap【轉載】

原文連結:https://blog.csdn.net/daily886/article/details/90051167

php7拓展 sapnwrfc 介紹 https://php7-sapnwrfc.readthedocs.io/zh/latest/introduction.html

php7-sapnwrfc 擴充套件封裝了 SAP NetWeaver RFC 庫 並且使用提供的方法允許 PHP開發者呼叫開啟了遠端呼叫的ABAP模組。

一,在伺服器上安裝 sapnwrfc 的 sdk 環境
下載sapnwrfc 的sdk https://github.com/mikewolfli/sapnwrfcsdk

 

 

 

linux/centos系統使用的是紅色箭頭的壓縮包

下載後解壓該壓縮包 得到一個 nwrfcsdk 資料夾

在伺服器新建一個package資料夾 把 nwrfcsdk 資料夾上傳到 package資料夾內

建立 /usr/sap 目錄

複製上傳的資料夾到 /usr/sap 目錄中

命令如下:

[root@centos ~]# mkdir package
[root@centos ~]# ll
total 4
drwxr-xr-x 2 root root 4096 May 10 08:50 package
[root@centos ~]# cd package
[root@centos package]# ll
total 4
drwxr-xr-x 7 root root 4096 May 10 08:50 nwrfcsdk
 
[root@centos package]# mkdir /usr/sap
[root@centos package]# cp nwrfcsdk -r /usr/sap/nwrfcsdk
[root@centos package]# cd /usr/sap
[root@centos sap]# ll
total 4
drwxr-xr-x 7 root root 4096 May 10 08:53 nwrfcsdk
 
[root@centos lib]# chmod -R 755 /usr/sap
 

  

新建檔案 /etc/ld.so.conf.d/nwrfcsdk.conf 並編輯內容如下

[root@centos sap]# vi /etc/ld.so.conf.d/nwrfcsdk.conf
 
## 輸入以下內容
/usr/sap/nwrfcsdk/lib
 
:wq 儲存退出
 
## 使配置生效
[root@centos sap]# ldconfig


至此 sdk環境安裝完畢

二、安裝 php7-sapnwrfc
下載地址:https://github.com/yuanhuiqiang/php7-sapnwrfc

[root@centos sap]# cd ~/package

[root@centos package]# git clone https://github.com/yuanhuiqiang/php7-sapnwrfc
Cloning into 'php7-sapnwrfc'...
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 1409 (delta 0), reused 3 (delta 0), pack-reused 1400
Receiving objects: 100% (1409/1409), 6.72 MiB | 2.16 MiB/s, done.
Resolving deltas: 100% (839/839), done.

[root@centos package]# ll
total 8
drwxr-xr-x 7 root root 4096 May 10 08:50 nwrfcsdk
drwxr-xr-x 6 root root 4096 May 10 09:02 php7-sapnwrfc


切換到 php7-sapnwrfc 使用php安裝拓展方式安裝

命令如下

[centos@centos package]# cd php7-sapnwrfc

[centos@centos php7-sapnwrfc]# phpize
Configuring for:
PHP Api Version: 20151012
Zend Module Api No: 20151012
Zend Extension Api No: 320151012


[centos@centos php7-sapnwrfc]# ./configure --with-php-config=/usr/bin/php-config

[centos@centos php7-sapnwrfc]# make && make install


編輯 /etc/php.ini 新增拓展 sapnwrfc.so

[havshark@zhj_centos php7-sapnwrfc]# vi /etc/php.ini

## 新增一行
extension=sapnwrfc.so

:wq 儲存退出


重啟 php-fpm 即可看到拓展開啟

[centos@centos php7-sapnwrfc]# service php-fpm restart
Redirecting to /bin/systemctl restart php-fpm.service

[centos@centos php7-sapnwrfc]# php -m

## sapnwrfc就是拓展了
sapnwrfc
session
shmop
SimpleXML
sockets
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
zip
zlib

[Zend Modules]

三、使用sapnwrfc

<?php

use SAPNWRFC\Connection as SapConnection;
use SAPNWRFC\Exception as SapException;

$config = [
'ashost' => '192.168.1.1', // sap伺服器地址
'sysnr' => '00', //sap給的,systemNumber,一般'00-99'
'client' => '123', //sap給的,Client,一般'000-999'
'user' => 'YOUR USERNAME', //sap給的
'passwd' => 'YOUR PASSWORD', //sap給的
'trace' => SapConnection::TRACE_LEVEL_OFF,
];

try {
$c = new SapConnection($config);

$f = $c->getFunction('STFC_CHANGING'); //sap的方法/函式
$result = $f->invoke([ //給sap傳引數
'START_VALUE' => 0,
'COUNTER' => 1,
]);

var_dump($result); //sap的返回結果
/*
* array(2) {
* ["COUNTER"]=>
* int(2)
* ["RESULT"]=>
* int(1)
* }
*/
} catch(SapException $ex) {
echo 'Exception: ' . $ex->getMessage() . PHP_EOL;
}