自己配置的WAMP环境,扩展oracle函数库(oci),wampoci
同事昨天接到一个任务,要用php处理oracle数据库的内容,但是php打开oracle扩展不是像mysql那样直接用就行,需要下一点东西才能打开
第一步 需要到oracle官方下载一个install client 包,在win下找到你对应系统版本的zip(注意这里是系统版本)
截止到2015-06-25,下载地址如下http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
例如选择 Instant Client for Microsoft Windows (x64) 因为php扩展的是OCI,所以必须选对应版本的最全的那个,别的都没有OCI,这里下载可能需要有个账号,验证以后就可以下载,直接用连接下载不好用,没有的话注册一下就好了
第二部,需要下载win系统中的扩展包也就是.dll文件 下载地址 http://pecl.php.net/package/oci8 下面一段废话是告诉你怎么找的
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 在这个地址下点击
official Instant Client site. 拉到最后 Related Developer Centers 里面点 "PHP - OCI8 extension"
然后选项卡 downloads 点OCI8 到 http://pecl.php.net/package/oci8
然后怎么下载就不多说了
到这里完成下载两个zip包,然后就是配置PHP
第三,解压下载的第一个文件,到电脑任意目录,解压后得到文件目录 instantclient_12 _1 建议把后面的 "_12_1"去掉,以后改版本就不用动环境变量了
进入这个目录后双击打开 adrci.exe
得到如下命令行窗口,证明这个客户端在你本地可用
复制目录,我的是 F:\dev\instantclient 配置到系统的path环境变量,
第四,解压下载的dll的压缩包,复制其中的 php_oci8.dll php_oci8_11g.dll php_oci8_12c.dll 我目前就是这三个,到php的扩展包文件,通常是 ....../php/ext/目录下
其实可以不替换,不过建议还是替换一下好,
然后打开php.ini 把扩展打开,最后一个是后来加进去的,php本来没有,反正上面包里有的dll文件都写进去应该错不了,顶多运行php的时候多加载几个库
extension=php_pdo_oci.dll
extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
extension=php_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client
extension=php_oci8_12c.dll ; Use with Oracle 12c Instant Client
然后重启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> (connect_data=(service_name=".<span>$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> ?>
至此,整个的扩展加连接就完成了

로드 밸런싱은 세션 관리에 영향을 미치지 만 세션 복제, 세션 끈적임 및 중앙 집중식 세션 스토리지로 해결할 수 있습니다. 1. 세션 복제 복사 서버 간의 세션 데이터. 2. 세션 끈은 사용자 요청을 동일한 서버로 안내합니다. 3. 중앙 집중식 세션 스토리지는 Redis와 같은 독립 서버를 사용하여 세션 데이터를 저장하여 데이터 공유를 보장합니다.

SessionLockingIsateChniqueSureDureauser의 SessionLockingSsessionRemainSexclusivetoOneuseratatime.itiscrucialforpreptingdatacorruptionandsecurityBreachesInmulti-userApplications.sessionLockingSogingSompletEdusingserVerver-sidelockingMegynisms, unrasprantlockinj

PHP 세션의 대안에는 쿠키, 토큰 기반 인증, 데이터베이스 기반 세션 및 Redis/Memcached가 포함됩니다. 1. Cookies는 클라이언트에 데이터를 저장하여 세션을 관리합니다. 이는 단순하지만 보안이 적습니다. 2. Token 기반 인증은 토큰을 사용하여 사용자를 확인합니다. 이는 매우 안전하지만 추가 논리가 필요합니다. 3. Database 기반 세션은 데이터베이스에 데이터를 저장하여 확장 성이 좋지만 성능에 영향을 줄 수 있습니다. 4. Redis/Memcached는 분산 캐시를 사용하여 성능 및 확장 성을 향상하지만 추가 일치가 필요합니다.

SessionHijacking은 사용자의 SessionID를 얻음으로써 사용자를 가장하는 공격자를 말합니다. 예방 방법은 다음과 같습니다. 1) HTTPS를 사용한 의사 소통 암호화; 2) SessionID의 출처를 확인; 3) 보안 세션 생성 알고리즘 사용; 4) 정기적으로 SessionID를 업데이트합니다.

이 기사는 PHP에 대해 설명하고, 전체 형식, 웹 개발의 주요 용도, Python 및 Java와의 비교 및 초보자를위한 학습 용이성을 자세히 설명합니다.

PHP는 유효성 검사, 소독 및 보안 데이터베이스 상호 작용을 통해 보안을 보장하면서 $ \ _ post 및 $ \ _를 사용하여 데이터 양식 데이터를 처리합니다.

이 기사는 PHP와 ASP.NET을 비교하여 대규모 웹 응용 프로그램, 성능 차이 및 보안 기능에 대한 적합성에 중점을 둡니다. 둘 다 대규모 프로젝트에서는 실용적이지만 PHP는 오픈 소스 및 플랫폼 독립적이며 ASP.NET,

PHP의 사례 감도는 다양합니다. 함수는 무감각하고 변수와 클래스는 민감합니다. 모범 사례에는 일관된 이름 지정 및 비교를위한 사례 감수 기능 사용이 포함됩니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)
