ちょっとヘルプに入ってCakePHPを書いてみた。
嵌まったところをメモ。
Call to a member function init~ エラー
undefined とか null とか出る場合は、該当行に到達する前に判定を入れることで回避できる。
嵌まったところをメモ。
Call to a member function init~ エラー
コンストラクタに以下を追加する。
construct($request, $response)
undefined とか null とか出る場合は、該当行に到達する前に判定を入れることで回避できる。
mysql + PHP移植メモ
2018年1月21日 PHPWindowsの開発環境から、Linuxの開発環境への移植を行ったのだが、SELECT文の実行結果が想定どおり得られない(0件)で困ったのでメモ。
結論としては「SQL内で使用しているテーブル名が大文字だったため」。
一般的にはmy.cnf(Windowsの場合my.ini)の設定を変更するとのこと。
lower_case_table_names = *
0:大文字小文字を区別する
1:大文字小文字を区別しない(テーブル名をすべて小文字にして格納)
2:大文字小文字を区別しない(テーブル名をそのまま格納)
設定はあまり変更したくないので、コードのSQL文を変更して対応した。
色々調べているうちに副産物として、Linux + mysql の知識がついたので良しとしよう。
結論としては「SQL内で使用しているテーブル名が大文字だったため」。
一般的にはmy.cnf(Windowsの場合my.ini)の設定を変更するとのこと。
lower_case_table_names = *
0:大文字小文字を区別する
1:大文字小文字を区別しない(テーブル名をすべて小文字にして格納)
2:大文字小文字を区別しない(テーブル名をそのまま格納)
設定はあまり変更したくないので、コードのSQL文を変更して対応した。
色々調べているうちに副産物として、Linux + mysql の知識がついたので良しとしよう。
Ubuntu + PHP メモ
2018年1月14日 PHP コメント (2)UbuntuとPHPのバージョンアップを行ったときメモ。
下記方法ではphpinfoが表示されなかった。
http://shima0000.diarynote.jp/201406141100249054/
# PHP7のインストール
sudo apt-get install php
# モジュールのインストール
$ sudo apt-get install php7.0-fpm php7.0-mysql php7.0 libapache2-mod-php7.0
# モジュール有効化
sudo a2enmod php7.0
# シンボリックリンクの追加
sudo ln -s ../mods-available/php7.2.conf php7.conf
sudo ln -s ../mods-available/php7.2.load php7.load
# apache 再起動
sudo /etc/init.d/apache2 restart
## メモ
設定中にapacheが再起動出来なかったときのコマンド
原因を探るためにこれを使用した
systemctl status apache2
下記方法ではphpinfoが表示されなかった。
http://shima0000.diarynote.jp/201406141100249054/
# PHP7のインストール
sudo apt-get install php
# モジュールのインストール
$ sudo apt-get install php7.0-fpm php7.0-mysql php7.0 libapache2-mod-php7.0
# モジュール有効化
sudo a2enmod php7.0
# シンボリックリンクの追加
sudo ln -s ../mods-available/php7.2.conf php7.conf
sudo ln -s ../mods-available/php7.2.load php7.load
# apache 再起動
sudo /etc/init.d/apache2 restart
## メモ
設定中にapacheが再起動出来なかったときのコマンド
原因を探るためにこれを使用した
systemctl status apache2
事前作業
php.ini 内のextension=php_intl.dllのコメントアウトを除外しておく
Composerをインストーラを使用してインストールする
以下コマンドで進める
composer self-update && composer create-project --prefer-dist cakephp/app cake3_test
composer install
bin\cake server
Set Folder Permissions ? (Default to Y) [Y,n]? Yを入力する
サーバが起動したらWebブラウザで以下にアクセスする
http://localhost:8765/
EclipseのPHPプロジェクト作成エラーメモ
2017年5月21日 PHP
Eclipseで新規にPHPプロジェクトを作成しようとしたときにエラーが発生したので、対応メモ。
Eclipseで新規にPHPプロジェクトを作成しようとしたとき、以下の内容でエラーが発生した。(図1)
メニューバーにある「ヘルプ」→「Eclipseマーケットプレイス」で「Eclipseマーケットプレイス」を開く。(図2)
その中で「PDT」で検索を行い、PHP開発ルールのインストールを行う。(図3)
後はウィザードに沿ってインストールを進め、最後にEclipseを再起動する。
これで新規にPHPプロジェクトを作成する事が出来る。
Eclipseで新規にPHPプロジェクトを作成しようとしたとき、以下の内容でエラーが発生した。(図1)
プロジェクト説明の設定中に問題が発生しました。
ネーチャー ’org.eclipse.php.core.PHPNature’ の構成でエラーが発生しました。
org.eclipse.dltk.core.IBuildpathEntry.isContainerEntry()Z
メニューバーにある「ヘルプ」→「Eclipseマーケットプレイス」で「Eclipseマーケットプレイス」を開く。(図2)
その中で「PDT」で検索を行い、PHP開発ルールのインストールを行う。(図3)
後はウィザードに沿ってインストールを進め、最後にEclipseを再起動する。
これで新規にPHPプロジェクトを作成する事が出来る。
phpのDB接続メモ
2016年12月29日 PHP コメント (1)PHP+MySQLで、PDOが使えないことがあったので、確認内容のメモ。
■phpinfoを確認する
PDOが no value になっている
■php.iniの設定を変更する
extension=php_pdo_mysql.dll
上記のコメントアウトを外して有効化する
■Apacheを再起動する
WordPressメモ
2016年7月28日 PHPWordPressのメモ。
■前提条件
mySQLとPHPが稼動していること。
事前にユーザとテーブルを作成しておくこと。
1.WordPressをダウンロードする
下記よりWordPressをダウンロードする。
https://ja.wordpress.org/
2.WordPressをhtdocsに移動する
ダウンロードしたファイルを解凍し、htdocs内にディレクトリごと移動する
配置は右の様になる → /Apache/htdocs/wordpress
3.wp-config.phpを作成する
wordpressディレクトリ内にwp-config-sample.phpがあるので、それをコピーして名称をwp-config.phpに変更する
4.wp-config.phpのmySQLの設定を変更する
wp-config.php内のmySQLの各設定を変更する
同様に、認証様のユニークキーを設定する。
下記URLにアクセスすると、認証用のキーが表示されるので、それをそのまま貼り付けるだけで良い。
https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org
これで設定が出来るので、ブラウザからwordpressにアクセスして確認する。
参考
http://dotinstall.com/lessons/basic_wordpress/22702
■前提条件
mySQLとPHPが稼動していること。
事前にユーザとテーブルを作成しておくこと。
1.WordPressをダウンロードする
下記よりWordPressをダウンロードする。
https://ja.wordpress.org/
2.WordPressをhtdocsに移動する
ダウンロードしたファイルを解凍し、htdocs内にディレクトリごと移動する
配置は右の様になる → /Apache/htdocs/wordpress
3.wp-config.phpを作成する
wordpressディレクトリ内にwp-config-sample.phpがあるので、それをコピーして名称をwp-config.phpに変更する
4.wp-config.phpのmySQLの設定を変更する
wp-config.php内のmySQLの各設定を変更する
// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define(’DB_NAME’, ’dotinstall_wordpress’);
/** MySQL データベースのユーザー名 */
define(’DB_USER’, ’xxxx’);
/** MySQL データベースのパスワード */
define(’DB_PASSWORD’, ’xxxx’);
/** MySQL のホスト名 */
define(’DB_HOST’, ’localhost’);
/** データベースのテーブルを作成する際のデータベースの文字セット */
define(’DB_CHARSET’, ’utf8’);
/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define(’DB_COLLATE’, ’’);
同様に、認証様のユニークキーを設定する。
下記URLにアクセスすると、認証用のキーが表示されるので、それをそのまま貼り付けるだけで良い。
https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org
これで設定が出来るので、ブラウザからwordpressにアクセスして確認する。
参考
http://dotinstall.com/lessons/basic_wordpress/22702
WordPressのテスト
2016年7月6日 PHP
試験的にWordPressを入れてみた。
事前準備として、Apache、PHP、mySQLが必要になる。
初回表示の際は"index Of"が表示されてしまったが(図1)、これは下記の方法で対応した。(図2)
事前準備として、Apache、PHP、mySQLが必要になる。
初回表示の際は"index Of"が表示されてしまったが(図1)、これは下記の方法で対応した。(図2)
httpd.conf に index.php を追加する
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
PHPの文字化けを直す方法メモ。
■php.iniのdefault_charsetを変更する
■httpd.confにAddDefaultCharsetを記述する。
■ソース内にcharsetを記述する
ただし、DBが絡むとNLS_LANGやらも関係してくるのでこの限りではない。
昔に嵌まった事があったので、一応リンクを張っておく。
http://shima0000.diarynote.jp/201303072002353614/
■php.iniのdefault_charsetを変更する
php.ini内にあるdefault_charsetを指定する。
コメントアウトされているので、該当箇所のコメントを外す。
default_charset = "UTF-8"
■httpd.confにAddDefaultCharsetを記述する。
httpd.conf内にAddDefaultCharsetを記述する。
AddDefaultCharset UTF-8
■ソース内にcharsetを記述する
文字化けが発生しているソース内に文字コードを記述する。
header("Content-Type: text/html; charset=UTF-8");
ただし、DBが絡むとNLS_LANGやらも関係してくるのでこの限りではない。
昔に嵌まった事があったので、一応リンクを張っておく。
http://shima0000.diarynote.jp/201303072002353614/
phpMyAdmin
2015年7月25日 PHP
前回MySQLを入れた後、色々確認するためにphpMyAdminを入れてみた。
Apacheとphpをインストール・設定してからphpMyAdminの設定。
// apache2_4を使用している場合、phpのバージョンによってはphp5apache2_4.dllが無いものもあるので注意。
php.ini内 phpの設定でmySQL関係のモジュールを有効にする。
extension_dirが有効になっていないので設定追記。(コメントアウトを解除)
extension=php_mysql.dll
extension=php_mysqli.dll
設定後確認でphpmyAdminの画面を開いたらソースがそのまま表示されてしまったので、httpd.confに書き設定を追記。
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
ソースが表示されなくなったが、下記エラーメッセージが表示される。
php.ini内の
extension=php_mbstring.dll
のコメントアウトを解除して設定完了。
Apacheとphpをインストール・設定してからphpMyAdminの設定。
// apache2_4を使用している場合、phpのバージョンによってはphp5apache2_4.dllが無いものもあるので注意。
phpMyAdmin
▼下記から phpMyAdmin をダウンロード
https://www.phpmyadmin.net/
zipファイルを展開しhtdocs内にフォルダコピーする。
php.ini内 phpの設定でmySQL関係のモジュールを有効にする。
extension_dirが有効になっていないので設定追記。(コメントアウトを解除)
extension=php_mysql.dll
extension=php_mysqli.dll
設定後確認でphpmyAdminの画面を開いたらソースがそのまま表示されてしまったので、httpd.confに書き設定を追記。
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
ソースが表示されなくなったが、下記エラーメッセージが表示される。
Array to string conversion in ~/htdocs/phpMyAdmin/libraries/Error.class.php on line 179, referer: http://localhost/phpMyAdmin/index.phpこれはマルチバイト文字関係の設定が抜けているかららしい。
php.ini内の
extension=php_mbstring.dll
のコメントアウトを解除して設定完了。
Ubuntu + PHP5 メモ
2014年6月14日 PHPUbuntu14.04LTS に Aapache2 と PHP5 をインストールした時のメモ。
# Apache2 をインストール
sudo apt-get install Apache2
# PHP5 をインストール
sudo apt-get install php5
# モジュールをインストール
sudo apt-get install libapache2-mod-php5
# Apache再起動
/etc/init.d/apache2 restart
# ローカルIP確認
ifconfig
# Apache 起動確認
http://localhost/index.html
# PHP5も見れるか確認
sudo vim /var/www/html/phpinfo.php
http://localhost/phpinfo.php
# Apache2 をインストール
sudo apt-get install Apache2
# PHP5 をインストール
sudo apt-get install php5
# モジュールをインストール
sudo apt-get install libapache2-mod-php5
# Apache再起動
/etc/init.d/apache2 restart
# ローカルIP確認
ifconfig
# Apache 起動確認
http://localhost/index.html
# PHP5も見れるか確認
sudo vim /var/www/html/phpinfo.php
http://localhost/phpinfo.php
PHP + Oracle
2013年3月7日 PHPPHPでDB(Oracle)と接続する際に色々嵌ったのでメモ。
具体的にはDBに接続出来なかったり、エンコードが上手くいかなかった。
これが上手くいかなかった。しかし下記の方法なら接続出来た。
直接ソースに書くと接続できる事から、サーバ側のtnsnames.oraが見えてないと判断し、tnsnames.oraへのpathを記述。下記の行を追加した。
これで接続は出来たが、取得した文字列が文字化けしている。DB側は Japanese_Japan.JA16SJIS だったのでエンコードを sjis → utf-8 にしていたのだが、phpinfo で確認したところ、対象の値が設定されていなかった。調べたらデフォルトで EUC になるらしかったので、NLS_LANG関係で下記の2行を追記した。
JAPANESE_JAPAN.JA16EUC で接続して、その後 UTF-8 にエンコード。
php.ini や httpd.conf で値を設定できるが、サーバを使用しているのが自分だけではないため弄れず、とりあえずこの方法でやってみる事にした。何にせよ、表面上は何とかなったので今回は良しとする。本来は設定しておかないといけないんだけどね。
具体的にはDBに接続出来なかったり、エンコードが上手くいかなかった。
# OCILogonで接続する
$con = OCILogon([username],[password],[db]);
これが上手くいかなかった。しかし下記の方法なら接続出来た。
$db = "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)
(HOST=[IP address])(PORT=[port])))
(CONNECT_DATA=(SID=[sid])
(SERVICE_NAME=[SERVICE_NAME])))";
直接ソースに書くと接続できる事から、サーバ側のtnsnames.oraが見えてないと判断し、tnsnames.oraへのpathを記述。下記の行を追加した。
# tnsnames.ora へのpathを記述する
putenv("TNS_ADMIN=[path to tnsnames.ora]");
これで接続は出来たが、取得した文字列が文字化けしている。DB側は Japanese_Japan.JA16SJIS だったのでエンコードを sjis → utf-8 にしていたのだが、phpinfo で確認したところ、対象の値が設定されていなかった。調べたらデフォルトで EUC になるらしかったので、NLS_LANG関係で下記の2行を追記した。
# NLS_LANG の値を変更する
putenv("NLS_LANG=JAPANESE_JAPAN.JA16EUC");
putenv("NLS_LANGUAGE=JAPANESE");
JAPANESE_JAPAN.JA16EUC で接続して、その後 UTF-8 にエンコード。
php.ini や httpd.conf で値を設定できるが、サーバを使用しているのが自分だけではないため弄れず、とりあえずこの方法でやってみる事にした。何にせよ、表面上は何とかなったので今回は良しとする。本来は設定しておかないといけないんだけどね。
いつぞやに書いた PHP4.x系統でOCILogonが使えなくなるやつ。
どうやら起動時にtnsnames.oraの場所が分からなくなっていた模様。
サーバの apachectl を再起動したら直ってくれた。
でもこうなってしまった原因は不明。
多分自分の知らないところで誰かが何かをやったのかもしれない。
とりあえず無事に元に戻って何より。
どうやら起動時にtnsnames.oraの場所が分からなくなっていた模様。
サーバの apachectl を再起動したら直ってくれた。
でもこうなってしまった原因は不明。
多分自分の知らないところで誰かが何かをやったのかもしれない。
とりあえず無事に元に戻って何より。
PHP OCILogon
2012年5月17日 PHPどうもPHPでDB(oracle)に接続できたり出来なかったりするケースがあるので色々書いてみる。
いつからかは不明だが、3のケースでDBとの接続を確立できない場合があった。サーバの httpd の再起動も試みたが、症状は改善されなかった。ので、確実にDBに接続できるようにソースを改修する事に。今までは3の方法だけで問題無かったのだが、1のように直接ソースに記載する方法だと接続出来るようになった。直近でサーバや該当ソース、tnsnamesを変更するような事はしていない。何故こうなったのかは不明。
(´・ω・) ウーン…
# 追記:Linux (Redhat) + PHP 4.x 系統
/* 1 - この場合は正常に接続できる */
$db = "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)
(HOST=[IP address])(PORT=[port])))
(CONNECT_DATA=(SID=[sid])
(SERVICE_NAME=[SERVICE_NAME])))";
/* 2 - この場合は接続できない場合がある */
putenv("TNS_ADMIN=[/path to tnsnames.ota]");
/* 3 - この場合は接続できない場合が多い */
$con = OCILogon([username],[password],[db]);
いつからかは不明だが、3のケースでDBとの接続を確立できない場合があった。サーバの httpd の再起動も試みたが、症状は改善されなかった。ので、確実にDBに接続できるようにソースを改修する事に。今までは3の方法だけで問題無かったのだが、1のように直接ソースに記載する方法だと接続出来るようになった。直近でサーバや該当ソース、tnsnamesを変更するような事はしていない。何故こうなったのかは不明。
(´・ω・) ウーン…
# 追記:Linux (Redhat) + PHP 4.x 系統