ApachePHPSQLServerWindows ServerWindows7パソコンのこと

Windows7 Apache2.4.4 PHP5.4.22 SQL Server 2008R2接続 開発環境構築について

1 Mins read

■環境クライアント
Windows7(x64)
LAMPP 1.8.2(x86)
UTF-8

■接続先サーバー
Windows Server 2008R2(x64)
Microsoft SQL Server 2008 (SP3) – 10.0.5500.0 (X64)
UTF-8

■クライアント環境 SQL Server Native Client

[MicrosoftR SQL ServerR 2012 SP1 用 Feature Pack]から
[JPN\x64\sqlncli.msi] Or [JPN\x86\sqlncli.msi]をダウンロードする。

クライアントOSの環境に合わせる。今回はWindow7x64なので場合は[JPN\x64\sqlncli.msi]をインストールする。

また、接続先はSQL Server 2008R2だが下位互換があるため、最新版の2012用を使用する。

http://www.microsoft.com/ja-jp/download/details.aspx?id=35580

■クライアント環境 Drivers for PHP for SQL Server

Microsoft Drivers 3.0 for PHP for SQL Server

今回は
・PHP5.4系
・SQL Server 2008R2
・Native Client 2012用
なので、「Microsoft Drivers 3.0 for PHP for SQL Server」を使用する。
環境により「Microsoft Drivers 2.0 for PHP for SQL Server」と使い分けること。

以下から、ダウンロードしてくる
http://www.microsoft.com/en-us/download/details.aspx?id=20098

回答後のファイルの中からPHP5.4用のextensionを使用する

PHPのスレッドセーフ Or Noneスレッドセーフにより
「php_pdo_sqlsrv_54_ts.dll」 Or 「php_pdo_sqlsrv_54_nts.dll」を使い分ける

あとはPHP.iniに以下を記載する(今回はスレッドセーフ版使用)
extension=php_sqlsrv_54_ts.dll
extension=php_pdo_sqlsrv_54_ts.dll

phpinfoで確認して使用する

PDO&UTF-8指定で接続!

Related posts
macOSパソコンのこと日記

【Mac】ターミナルなど Operation not permitted を回避し開発者仕様にする

1 Mins read

macOS Monterey
Version12.4

■1.「SIP」をdisableに変更
(システム整合性保護(System Integrity Protection: SIP)の無効化)

Macを一度シャットダウン
起動時に「command + R」押下、マークが表示されたら離す
リカバリーモードが起動
上のメニューバーから「ターミナル起動」

# コマンド:「csrutil status」が「enabled」なら
csrutil status

# コマンド:「csrutil disable」を叩く(再起動しないと反映されない!)
csrutil disable

# コマンド:「reboot」にてMac再起動
reboot

■2.ターミナルをファイルフル権限に設定
通常起動後に
「システム環境設定」

「セキュリティーとプライバシー」

「プライバシー」タブの右側「フルアクセス」

「ターミナル」のチェックボックスOn

■3.「.DS_store」を削除&作成不能とする

# .DS_Storeファイル全部削除
sudo find / -name ".DS_Store" -delete
# Finder再起動
Killall Finder

# .DS_Storeファイルを完全に作らない
defaults write com.apple.desktopservices DSDontWriteNetworkStores True
# Finder再起動
Killall Finder

■4.必要ないならiCloud同期しない設定がおすすめ

LinuxMySQLPHP

PHP7 MySql error Uncaught Error: Call to undefined function mysql_real_escape_string()

1 Mins read

PHP7の環境へPHP5系のアプリを移動してみたら案の定動かん。。。

モジュール調べたら「mysql_」系が無くなってて「mysqli_」に代わっているのみたいなのでソース内をgrepして片っ端から直したらなんとか動いた♪

mysql_

から

mysqli_

へ「i」つける!

「mysql_select_db」や「mysql_query」は「i」付けるだけではなく、引数の順番も変わっているから念のため、関連する部分は見直しが必要です。

このタイミングで出来ればオブジェクト指向系に変更することをおススメします。
「mysqli::query」感じ!

あと、なんかunset($this)も使えんようになってたみたい。

時代は進むんだぁ

OracleWindows Server

Windows 2008R2 に Oracle Database 11g を SJIS でセットアップ および Data Pump(データポンプ)使用可にする

2 Mins read

日本企業の金融系で使用されているOracleはまだまだSJISが多く使われている。
テストや開発環境構築時にSJISで立ち上げるための覚書

まとまってなくきたなくて。。。ごめん

●Oracle XEのデータベースをSJISで再構築
再作成後はデータポンプが使用できないので使用可能に設定する

/*========================================
■環境
========================================*/

Windows 2008R2 Standard SP1 (x64)
Oracle Database 11g Express Edition Release2 (11.2.0.2.0 – 64bit Production)

標準セットアップが正常に完了している前提(標準ではUTF-8になる)
SJISも「JA16SJIS」、「JA16SJISTILDETILDE」などあるから環境にあわせてください。今回は「JA16SJISTILDE」です。
文字コードについて

/*========================================
■データベースの再構築
========================================*/
前提、1インスタンス、1データベースとなるOracle
文字コード変更を行う場合、再作成が必要となる
XEでは複数インスタンスを作成できないので、
SIDを増やす方法ではなくインストール時のデータベースを削除し新しく再作成する
余談だが上位エディッションであれば複数インスタンス、複数データベースの運用が可能となる
その際はSIDを決め環境変数など設定が必要

・Dosプロンプトを管理者権限でオープンする

・データベースを削除するためのCleanUp.batが用意されている
CleanUp.batを走らせる

/*
C:\oraclexe\app\oracle\product\11.2.0\server\bin\CleanUp.bat
*/

・手作業で残ったファイルを削除
/*
cd C:\oraclexe\app\oracle\product\11.2.0\server\dbs
*/

/*
del *
*/

・新規データベースを作成する
データベースを作成するためのCreateDB.batが用意されている
文字コードを指定し、再作成する

この処理にはマシンスペックによるが30分から1時間はかかる

/*
cd C:\oraclexe\app\oracle\product\11.2.0\server\bin

CreateDB.bat -dbchar JA16SJISTILDE
*/

・システムのプロパティから環境変数を設定する
(存在しなければ設定する)
/*
ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server
ORACLE_SID = XE
PATH = C:\oraclexe\app\oracle\product\11.2.0\server\bin
NLS_LANG = JAPANESE_JAPAN.JA16SJISTILDE
*/

・DosプロンプトをCloseし管理者権限で再度オープンする
(環境変数を反映させるため)

・Oracleが起動しているかチェックする
/*
tasklist | find “oracle”
*/

・TNS Listnerの起動と確認
/*
lsnrctl.exe start
tasklist | find “TNSLSNR.EXE”
*/

・管理者アカウントのパスワードが設定されていないので再設定を行う
/*
sqlplus /nolog
connect sys as sysdba
*/

・パスワード[hogehoge]で設定 ※環境で変えてくださいね
/*
ALTER USER SYS IDENTIFIED BY “hogehoge”;
ALTER USER SYSTEM IDENTIFIED BY “hogehoge”;
*/

・登録ユーザーの確認とキャラクターセットの確認
/*
select username from dba_users;

select value from nls_database_parameters where parameter=’NLS_CHARACTERSET’;
*/

・パスワードの有効期限が180日になっているので無期限にする
(突然ロックされるので。。。環境によって変更してください)
/*
確認
select * from dba_profiles where resource_name = ‘PASSWORD_LIFE_TIME’;

select username,profile from dba_users;

無期限に変更
alter profile default limit password_life_time unlimited;
*/

・外部からの接続のためにWindows2008R2のファイアーウォール受信「TCP 1521」ポートを開けてあげること!

/*========================================
■Data Pump(データポンプ)
※他にもっと良い方法があれば教えて!
========================================*/

再作成後は「expdb, impdp」が使用不可能になっている
(メタデータ処理が出来ないエラーが出る)

正規版(お試し版で可)の11gR2のOracleを別マシンにインストールし以下のフォルダからファイルコピーする
「$ORACEL_HOME\rdbms\xml\xsl」フォルダごと
XEの「C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\xml」の直下にコピー

「kupostdt.xsl」ファイルを作成し同じフォルダへコピー
参照先(https://forums.oracle.com/forums/thread.jspa?messageID=9958876)
xslフォルダ内のファイルは全部で180ファイルになる

・sysユーザでログインし以下のコマンドを実行すると使用可能となる
SQL>execute dbms_metadata_util.load_stylesheets

/*========================================
■個別スキーマ(ユーザー)作成
========================================*/

/*
[Oracle 11g XE re2]
ユーザー名は大文字で登録される’ADMINUSER’ ※環境で変えてくださいね
*/

create user ADMINUSER
identified by hogehoge
default tablespace USERS
temporary tablespace TEMP;
/* 指定の表領域を無制限に使用できるように設定します。 */
ALTER USER ADMINUSER QUOTA UNLIMITED ON USERS;

col USERNAME for a10
col ACCOUNT_STATUS for a20
col DEFAULT_TABLESPACE for a20
col TEMPORARY_TABLESPACE for a20
select USERNAME,ACCOUNT_STATUS,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users where USERNAME=’ADMINUSER’;

/* 権限付与・確認 */
GRANT CONNECT,RESOURCE TO ADMINUSER;
GRANT UNLIMITED TABLESPACE TO ADMINUSER;
GRANT CREATE SESSION TO ADMINUSER;
GRANT CREATE TABLE TO ADMINUSER;
GRANT CREATE PROCEDURE TO ADMINUSER;
GRANT SELECT ANY TABLE TO ADMINUSER;

col GRANTEE for a30
col GRANTED_ROLE for a30
select GRANTEE,GRANTED_ROLE from dba_role_privs where GRANTEE=’ADMINUSER’;

/* データポンプ処理 */
sqlplus /nolog
connect sys as sysdba;

sqlplus /nolog
connect system as sysdba;

/* エクスポートDir作成・権限付与 */
CREATE DIRECTORY expdp as ‘C:\oraclexe\expdir’;

GRANT READ, WRITE ON DIRECTORY expdp TO ADMINUSER;
GRANT EXP_FULL_DATABASE TO ADMINUSER;

/* インポートDir作成・権限付与 */
CREATE DIRECTORY impdp as ‘C:\oraclexe\impdir’;

GRANT READ, WRITE ON DIRECTORY impdp TO ADMINUSER;
GRANT IMP_FULL_DATABASE TO ADMINUSER;

/* インポートサンプル */
impdp ADMINUSER/hogehoge DIRECTORY=impdp DUMPFILE=DEMO.dmp LOGFILE=DEMO_20171017.log SCHEMAS=DEMO REMAP_SCHEMA=DEMO:ADMINUSER

/*========================================
■クライアント設定
========================================*/

Windows7 Pro Sp1(x64)

ファイアーウォール「TCP 1521」ポートを開放すること!
受信、ローカルポート:任意、リモートポート:1521

Oracle Database 11g Release 2 for Microsoft Windows (32-bit)をダウンロード
(64bit版もある)

解答したファイルからセットアップを開始する。
インストールするオプションは
「SQL*Plus」
「Oracle Net」
のみでよい(最小構成でOKなら)

テキストエディッタで「tnsnames.ora」を作成し内容はこんな感じ
IPやSIDが違う場合など状況により変更してください
=================================================
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.XX)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)

EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)

ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
=================================================

作成したファイルを以下のフォルダに入れてあげる
「C:\app\iagsqap\product\11.2.0\client_1\network\admin」フォルダ内に

Dosプロンプトで

tnsping XE

と叩き通信の疎通を確認する

チームを強化する

サービスの
サブスクリプションの利点を説明するテキストを追加します。