어제 동료가 PHP를 사용하여 Oracle 데이터베이스의 내용을 처리하라는 작업을 받았습니다. 그러나 PHP는 MySQL처럼 Oracle 확장 프로그램을 직접 열 수 없습니다.
첫 번째 단계는 다음과 같습니다. Oracle에 공식적으로 설치 클라이언트 패키지를 다운로드하고 win에서 시스템 버전에 해당하는 zip을 찾으세요(참고: 2015-06년 현재 시스템 버전임)
-25, 다운로드 주소는 다음과 같습니다. http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
예를 들어 Microsoft Windows용 Instant Client( x64) php는 OCI를 확장하기 때문에 해당 버전의 가장 완전한 버전을 선택해야 합니다. 다른 버전에서는 OCI를 다운로드해야 할 수도 있습니다. 여기에서 확인 후 직접 다운로드하기가 쉽지 않습니다. 링크가 없으면 등록하세요.
두 번째 부분에서는 win 시스템에서 확장 패키지(다운로드 주소 http://pecl)를 다운로드해야 합니다. php.net/package/oci8 다음 말도 안되는 내용은 찾는 방법을 알려주는 것입니다
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 클릭
이 주소 아래의 공식 인스턴트 클라이언트 사이트에서 스크롤을 끝까지 스크롤하여 관련 개발자 센터 "PHP - OCI8 확장"
그런 다음 다운로드 탭을 클릭하고 OCI8을 클릭하여 http://를 클릭하세요. pecl.php.net/package/oci8
그럼 다운로드 방법에 대해서는 자세히 설명하지 않겠습니다
여기에서 두 개의 zip 패키지 다운로드를 완료한 다음 PHP를 구성하세요
셋째, 다운로드한 첫 번째 파일의 압축을 풀고 컴퓨터의 아무 디렉터리로 이동하여 압축을 푼 후 instantclient_12_1 파일 디렉터리를 얻습니다. 다음 "_12_1"을 넣는 것이 좋습니다. 제거하면 필요하지 않습니다. 향후 버전 변경 시 환경 변수를 변경하려면
이 디렉토리에 들어가서 두 번 클릭하여 adrci.exe를 엽니다
다음과 같은 명령줄 창이 표시됩니다. 이는 이 클라이언트가 로컬에서 사용할 수 있습니다
디렉토리를 복사하세요. 내 파일은 시스템의 경로 환경 변수인 F:devinstantclient입니다.
넷째, 다운로드한 dll 압축 패키지의 압축을 풀고 그 안에 php_oci8을 복사하세요. dll php_oci8_11g.dll php_oci8_12c.dll 저는 현재 이 세 개를 php 확장팩 파일에 가지고 있습니다. 보통...
/php/ext/ 디렉토리에 있습니다. 교체할 필요는 없지만 교체하는 것이 좋습니다.
그런 다음 php.ini를 열고 마지막 확장 기능은 나중에 추가되었습니다. 어쨌든, 모두. 위 패키지의 dll 파일이 작성되었습니다. 기껏해야 PHP를 실행하면 됩니다.
extension=php_pdo_oci.dll
extension=php_oci8.dll ; Oracle 10gR2 인스턴트 클라이언트와 함께 사용
extension=php_oci8_11g.dll ; Oracle 11gR2 인스턴트 클라이언트와 함께 사용
extension=php_oci8_12c.dll ; Oracle 12c 인스턴트 클라이언트와 함께 사용
그런 다음 httpd 서비스를 다시 시작하고 엽니다. phpinfo();
PDO support | enabled |
---|---|
PDO drivers | mysql, oci, odbc |
OCI8 Support | enabled |
OCI8 DTrace Support | disabled |
OCI8 Version | 2.0.8 |
Revision | $Id: f04114d4d67cffea4cdc2ed3b7f0229c2caa5016 $ |
Oracle Run-time Client Library Version | 12.1.0.2.0 |
Oracle Compile-time Instant Client Version | 10.2 |
이렇게 하면 확장 프로그램이 성공적으로 열렸다는 의미입니다.
마지막으로 oracle 데이터베이스에 연결합니다
원문 연결 예는 다음과 같습니다. http://www.orczhou.com/index.php/2010/09/php-oci8-oracle/
<span> 1</span> <?<span>php </span><span> 2</span><span>//</span><span>配置信息</span><span> 3</span><span>$ora_host</span> = "172.16.1.150"<span>; </span><span> 4</span><span>$ora_port</span>="1521"<span>; </span><span> 5</span><span>$ora_sid</span> = "cop"<span>; </span><span> 6</span><span>$ora_username</span> = "webdev"<span>; </span><span> 7</span><span>$ora_password</span> = "webdev"<span>; </span><span> 8</span><span>$charset</span> = "UTF8"; <span>#</span><span>## zhs16gbk ### </span><span> 9</span><span>10</span><span>//构建Easy Connect string </span><span>11</span><span>//(如果tnsnames.ora中已经有了,可以直接使用Connect Name)</span><span>12</span><span>$ora_connstr</span> = "<span>(description=(address=(protocol=tcp) </span><span>13</span> (host=".<span>$ora_host</span>.")(port=".<span>$ora_port</span>."<span>)) </span><span>14</span> (c>$ora_sid</span>.")))"<span>; </span><span>15</span><span>//</span><span>连接数据库</span><span>16</span><span>$conn</span> = oci_connect(<span>$ora_username</span>, <span>$ora_password</span>,<span>$ora_connstr</span><span>); </span><span>17</span><span>//</span><span>执行Query,这里$res接收的是一个boolean值</span><span>18</span><span>$stid</span> = oci_parse(<span>$conn</span>, 'select * FROM dq_try_app'<span>); </span><span>19</span><span>$res</span> = oci_execute(<span>$stid</span><span>); </span><span>20</span><span>21</span><span>//</span><span>在while循环中使用oci_fetch_array遍历结果。</span><span>22</span><span>while</span> (<span>$row</span> = oci_fetch_array(<span>$stid</span>, OCI_ASSOC+<span>OCI_RETURN_NULLS)) { </span><span>23</span><span>24</span><span>foreach</span> (<span>$row</span><span>as</span><span>$item</span><span>) { </span><span>25</span><span>echo</span><span>$item</span>."***"<span>; </span><span>26</span><span> } </span><span>27</span><span>echo</span> "<br>"<span>; </span><span>28</span><span>29</span><span>} </span><span>30</span><span>//</span><span>var_dump($stid); </span><span>31</span> ?>
이로써 전체 확장 및 연결이 완료되었습니다
위 내용은 제가 직접 구성한 WAMP 환경과 확장된 oracle 함수 라이브러리 oci를 소개하는 내용으로, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.