PHPタグの短縮型 ( <? ?> )を有効にするには、php.iniの「short_open_tag」を「On」にしなければなりません。
↓↓php.iniで下記のように設定します:
short_open_tag = On
上記の設定にすれば、下記のような出力もできます:
<?= "Hello world!"; ?> (<?php echo("Hello world"); ?>と同じ)
日々開発中にわかったことをメモしておきます
PHPタグの短縮型 ( <? ?> )を有効にするには、php.iniの「short_open_tag」を「On」にしなければなりません。
↓↓php.iniで下記のように設定します:
short_open_tag = On
上記の設定にすれば、下記のような出力もできます:
<?= "Hello world!"; ?> (<?php echo("Hello world"); ?>と同じ)
※実装環境:CentOS 6.2
yumを使ってphpMyAdminをインストールした場合、
設定ファイル「config.inc.php」の場所は、phpMyAdmin本体が格納された場所(普通は/usr/share/phpMyAdmin)ではありません。
つまり、/usr/share/phpMyAdmin/config.inc.phpを作成して編集しても効きません。
↓↓正解は下記のパスになりますので、要注意です。↓↓
/etc/phpMyAdmin/config.inc.php
「curl_setopt()」関数で「CURLOPT_SSL_VERIFYPEER」というオプションの設定ができます。
このオプションは、SSL通信時サーバー証明書の検証を行うかどうかを設定するオプションですが、cURL7.10以降はデフォルト値がtrueだそうです。
その為、そのままだと動かない可能性が高いです。
→ 本来は、「CURLOPT_CAINFO」オプションで接続先を検証するための証明書を保持するファイル名を指定するか、「CURLOPT_CAPATH」 オプションで証明ディレクトリを指定するべきですが、
「CURLOPT_SSL_VERIFYPEER」をfalseに設定すれば、証明書の検証を行わず、正常にSSL通信で結果を取得できます:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // $chはcURLハンドル
ApnsPHPを使ってプッシュ通知を実装するとき、下記のエラーが発生しました。
Mon, 09 Jul 2012 13:10:04 +0900 ApnsPHP[85724]: INFO: Trying ssl://gateway.sandbox.push.apple.com:2195... Mon, 09 Jul 2012 13:10:05 +0900 ApnsPHP[85724]: ERROR: Unable to connect to 'ssl://gateway.sandbox.push.apple.com:2195': (0) Mon, 09 Jul 2012 13:10:05 +0900 ApnsPHP[85724]: INFO: Retry to connect (1/3)... Mon, 09 Jul 2012 13:10:06 +0900 ApnsPHP[85724]: INFO: Trying ssl://gateway.sandbox.push.apple.com:2195... Mon, 09 Jul 2012 13:10:06 +0900 ApnsPHP[85724]: ERROR: Unable to connect to 'ssl://gateway.sandbox.push.apple.com:2195': (0) Mon, 09 Jul 2012 13:10:06 +0900 ApnsPHP[85724]: INFO: Retry to connect (2/3)... Mon, 09 Jul 2012 13:10:07 +0900 ApnsPHP[85724]: INFO: Trying ssl://gateway.sandbox.push.apple.com:2195... Mon, 09 Jul 2012 13:10:07 +0900 ApnsPHP[85724]: ERROR: Unable to connect to 'ssl://gateway.sandbox.push.apple.com:2195': (0) Mon, 09 Jul 2012 13:10:07 +0900 ApnsPHP[85724]: INFO: Retry to connect (3/3)... Mon, 09 Jul 2012 13:10:08 +0900 ApnsPHP[85724]: INFO: Trying ssl://gateway.sandbox.push.apple.com:2195...
いろいろ悩んだ結果、下記ページに載った方法で解決しました:
http://stackoverflow.com/questions/6279185/apnsphp-cant-connect-to-apple-gateway
→ 簡単にまとめますと、結局、ライブラリを1箇所修正した方向で行きました:
Abstract.phpの343行目の近くの「’verify_peer’ => isset($this->_sRootCertificationAuthorityFile),」をコメントアウトしました。
'verify_peer' => isset($this->_sRootCertificationAuthorityFile), → // 'verify_peer' => isset($this->_sRootCertificationAuthorityFile),
でも、やはり危なく感じていますので、何か良い解決策があったら教えていただければと思います。
setCookieなどでクッキーを書き込んだ直後に、header関数でリダイレクトすると、場合によってクッキーが消えることがあります。(ブラウザー依存みたいです)
※セッション値のセットも同じような現象が発生する可能性があります。
→ クッキーを利用する際に、headerより、ページを表示させてからrefreshやjavascriptで飛ばすほうが安全です。
PHPのバージョンは5.2.9です。(環境:Windows + Apache)
get_headers関数に「https」を渡したらエラーになりました:
$ary_headers = get_headers("https://example.com", 0); print_r($ary_headers);
でアクセスをしにいくと、下記のエラーが出ました:
Warning: get_headers() [function.get-headers]: This function may only be used against URLs. in XXXXXXXXXXXXXXX
→ 解決策:
実は、php.iniの中のphp_openssl.dllがコメントアウトになっているだけです。
php_openssl.dllを有効にしてApacheを再起動すれば、エラーが消えます。
;extension=php_openssl.dll → extension=php_openssl.dll
※phpinfo()で確認できます:
(1)php_openssl.dllが無効になっている場合、 【Registered PHP Streams】php, file, data, http, ftp, compress.zlib, zip 【Registered Stream Socket Transports】tcp, udp (2)php_openssl.dllが有効になっている場合、 【Registered PHP Streams】php, file, data, http, ftp, compress.zlib, https, ftps, zip 【Registered Stream Socket Transports】tcp, udp, ssl, sslv3, sslv2, tls
みたいな感じです。
基本的に
HowTos/PHP 5.1 To 5.2 – CentOS Wiki
のままでOKでした。
簡単にまとめてみると:
(1)現在インストールされた物の確認:
# rpm -qa | grep php
(2)/etc/yum.repos.d/の下に、下記内容で「CentOS-Testing.repo」という新しいリポジトリを追加します↓↓
[c5-testing] name=CentOS-5 Testing baseurl=http://dev.centos.org/centos/$releasever/testing/$basearch/ enabled=1 gpgcheck=1 gpgkey=http://dev.centos.org/centos/RPM-GPG-KEY-CentOS-testing includepkgs=php*
(3)アップデート
# yum update
(4)念のためhttpdを再起動
# service httpd restart
という感じです。