メイン

php アーカイブ

2022年12月04日

php 5.3 → 5.6

相変わらず古い環境の php 5.6 に合わせた時の備忘録。
$ cat /etc/redhat-release
CentOS release 6.8 (Final)
デフォルトは php 5.3。...▼

続きを読む "php 5.3 → 5.6" »

2018年07月01日

PHP で HTML をスクレイピング

●PHP SimpleXMLElement:読み出しやすい、追加のみ
●PHP DOMDocument:追加・削除できる
●PHP DOMXPath:domを柔軟にアクセス

というわけで 最終的に任意のノードを変更する為、PHP DOMDocument で HTML を DOM としてパース(スクレイピング)。
<?php
$html=<<<EOT
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <div class="chapter" name="1章 ようこそ">
      <h1>1-1節 remix.asia</h1>
      <div class="paragraph">
        文章
      </div><!-- paragraph -->
    </div><!-- chapter -->
    <div class="chapter" name="2章 言語"><!-- 章の数だけ繰り返し -->
      <h1>2-1節 HTML</h1>
      <div class="paragraph">
        HyperText Markup Language...
      </div><!-- paragraph -->
      <h1>2-2節 PHP</h1>
      <div class="paragraph"><!-- 節の数だけ繰り返し -->
        Hypertext Preprocessor
      </div><!-- paragraph -->
    </div><!-- chapter -->
  </body>
</html>
EOT;
$dom = new DOMDocument( '1.0', 'UTF-8' );
if( false == $dom->loadHTML( $html ) ){
  return;//error
}
の前提で...▼

続きを読む "PHP で HTML をスクレイピング" »

2016年04月12日

php で uuid を使う

●centos6.7 + php5.6 の場合。
sudo yum install --enablerepo=remi --enablerepo=remi-php56 php-devel
少なくとも
sudo yum install libuuid-devel
sudo pecl install -a uuid
が必要。さらに エディタ
sudo vi /etc/php.ini
起動し[PHP]ブロックの最後に
extension=uuid.so
を追加。
sudo service httpd restart
最後に apache再起動。
php -r "echo uuid_create(UUID_TYPE_RANDOM);"
コマンドラインでUUID生成確認。
centos6.7 + php5.3.3 の場合も同様に、
sudo yum install libuuid-devel
sudo pecl install uuid
でOK.。
"uuid-php" と "uuid" がインストールされていた場合は アンインストール必要。

●cent5、php5.1 の場合...▼

続きを読む "php で uuid を使う" »

2016年04月03日

php 4.4.1 開発環境構築

 今更、php 4.4.1 開発環境が必要に。数々のお粗末を露呈してきた懲りないお役所は情報漏えいなど所詮 他人事。

 centos4.* はデフォルトで php 4.* がインストールされるものの、かろうじてcentos4.9 が入手可能。
 64ビットcentos4.9は、デフォルトで php4.3.9 がインストールされる。
 この64ビット版に php 4.4.1 をソースからコンパイルしようとすると、32ビット環境が前提らしく configure, make で多数パス修正・妥協必要。
 試行錯誤の結果、32ビットOSに php 4.4.1 をソースからコンパイルが楽。と言う訳でその手順...▼

続きを読む "php 4.4.1 開発環境構築" »

2016年04月02日

Google OAuth 2.0 サーバーサイド設定

 Googleアカウントと連携するためのサーバーサイド設定 備忘録。
 (旧)Google API Client Services は Google API PHP Client 0.6.7 までで 今は GitHub で公開。
https://code.google.com/archive/p/google-api-php-client/
https://code.google.com/archive/p/google-api-php-client/downloads
●Google API Client Libraries PHP (Beta)のインストール
https://developers.google.com/api-client-library/php/start/installation
で、GitHub の v1-master リポジトリをクローンする旨記述があるものの 結果的には不要。
× → git clone -b v1-master https://github.com/google/google-api-php-client.git
 カレントリポジトリも同様で、これに含まれる /src/Google/Service/~ も別リポジトリに枝分かれ。
 サンプルで使われている Google_Service_Drive_FileList::getItems() 等が未実装。
 ちなみにドキュメントではPHP 5.2.1 以上、GitHub では PHP 5.4.0 以上、試した環境は centos6.7 PHP 5.3.3。

 結果的には、composer による設置で十分...▼

続きを読む "Google OAuth 2.0 サーバーサイド設定" »

2016年04月01日

centos6のデフォルトphp5.3.3を5.6.*へ

●php5.3.3関連のアンインストール
$ sudo yum remove php-*
●リポジトリ追加
$ sudo rpm -ivh http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
●リポジトリを指定してphp5.6.*インストール
$ sudo yum install --enablerepo=remi-php56 php php-devel php-pdo php-mysql php-mbstring php-pear
●webサーバ再起動
$ sudo service httpd restart

続きを読む "centos6のデフォルトphp5.3.3を5.6.*へ" »

2014年07月20日

某VPSへのセットアップおさらい2

 mysqlデータベースと連携したphp WEBアプリまで。

●WEBサーバー
apache がインストールされているか確認
$ sudo yum list installed | grep httpd
なければ apache をインストール
Server version: Apache/2.2.15 (Unix)
Server built: Apr 3 2014 23:56:16
$ yum info httpd
$ sudo yum -y install httpd
自動起動になっていなければ自動起動に変更
$ chkconfig --list | grep httpd
$ sudo chkconfig httpd on
apacheを起動してウェルカムページ確認
$ sudo service httpd start
http://IPアドレス/ ●apacheグループに所属させる
$ sudo usermod -G apache admin
$ id admin
●データベースサーバー
mysql-server がインストールされているか確認
$ sudo yum list installed | grep mysql-server
mysql Ver 14.14 Distrib 5.1.73 なければ mysql をインストール
$ yum info mysql-server
$ sudo yum -y install mysql-server
mysql-server を起動
$ sudo service mysqld start
初期化(パスワード・匿名ユーザー・サンプルデータベースの扱いなど)
$ sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we'll need the current
password for the root user.  If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): (初めてならエンター)
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] Y
New password: *****************
Re-enter new password: *****************
Password updated successfully!
Reloading privilege tables..
 ... Success!

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
	:
Remove anonymous users⁄ [Y/n] Y
	:
Disallow root login remotely⁄ [Y/n] Y
	:
Remove test database and access to it⁄ [Y/n] Y
	:
Reload privilege tables now⁄ [Y/n] Y
	:
日本語を使用する場合
sudo mv /etc/my.cnf /etc/my.cnf.org
sudo cp /etc/my.cnf.org /etc/my.cnf
sudo vi /etc/my.cnf
[mysqld]のブロックに最低限
[mysqld]
default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
を追記してmysqlサーバ再起動
$ sudo service mysqld restart
自動起動になっていなければ自動起動に変更
$ chkconfig --list | grep mysql
$ sudo chkconfig mysqld on
mysql-server へログオン確認
$ mysql --show-warnings -u root -p
●php php エンジンがインストールされているか確認
$ sudo yum list installed | grep php
PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies なければ php をインストール
$ sudo yum info php
$ sudo yum -y install php
php でマルチバイトストリング(日本語)を使えるか確認
$ sudo yum list installed | grep php-mbstring
なければ php-mbstring をインストール
$ yum info php-mbstring
$ sudo yum -y install php-mbstring
php から mysql を使用できるか確認
$ sudo yum list installed | grep php-mysql
なければ php-mysql をインストール
$ yum info php-mysql
$ sudo yum -y install php-mysql
確認用の phpファイルを作成
$ vi /var/www/html/info.php
$ cat /var/www/html/info.php
<?php
phpinfo();
?>
apacheを再起動
$ sudo service httpd restart
ここまで apache の設定ファイル httpd.conf はデフォルトのまま。
手元のブラウザで php の情報ページを確認。
http://IPアドレス/info.php
システム情報が表示されるので確認後 削除。
●phpライブラリpear
pear がインストールされているか確認
$ sudo yum list installed | grep php-pear
なければ pear をインストール
$ yum info php-pear
$ sudo yum -y install php-pear
pear バージョン確認
$ pear version
$ pear list
PEAR Version: 1.9.5 下記のエラー
$ sudo pear install -a ethna/ethna

Notice: Array to string conversion in PEAR/REST/13.php on line 80
PHP Notice:  Array to string conversion in /usr/share/pear/PEAR/REST/13.php on line 80

Warning: Invalid argument supplied for foreach() in PEAR/REST/13.php on line 84
PHP Warning:  Invalid argument supplied for foreach() in /usr/share/pear/PEAR/REST/13.php on line 84
PHP Fatal error:  Cannot use string offset as an array in /usr/share/pear/PEAR/REST/10.php on line 263
を解決するため
$ sudo pear clear-cache
pear アップグレード
$ sudo pear list-upgrades
$ sudo pear upgrade pear
●phpフレームワーク ethna ethna をインストール
$ sudo pear channel-discover pear.ethna.jp
$ sudo pear install -a ethna/ethna
ethna コマンド確認
$ ethna -v
Ethna 2.5.0 (using PHP 5.3.3)

●GDライブラリ
phpで画像の拡大・縮小をするためインストール
$ sudo yum list installed | grep php-gd
$ yum info php-gd
$ sudo yum -y install php-gd

2013年09月24日

JPGRAPH の StockPlot

StockPlotJPGRAPH の ローソク足描画クラス StockPlot は、陰線のラインカラーが陽線と同じ。
ラインカラーをそれぞれ陰線・陽線の塗りつぶしカラーと同じに修正する。

確認環境
CentOS 6.4
PHP Version 5.3.3
GD Version 2.0.34
JPGRAPH 3.0.8

手順は...▼

続きを読む "JPGRAPH の StockPlot" »

2013年06月08日

Ethna で SQLite の試み

今さらながら Ethna-2.5.0 で データベース MySQL から SQLite に切り替えてみる。
SQLite と言っても互換性が無くなってしまった SQLite2 。ここまでの環境
CentOS release 6.4 (Final)
PHP Version 5.3.3
 DB 1.7.14 stable
 PEAR 1.9.4 stable
sqlite 2.8.17
sqlite3 3.6.20
で、Ethna-2.5.0 + MySQL5 前提Webアプリのデータベースを SQLite2 に切り替え。
極力 SQLベタ書きをさける為の Ethna_AppObject は、そのままではNG。
原因は PEAR:DB::fetchRow(DB_FETCHMODE_ASSOC) の結果セット各列のキーが
mysql だと
	field
SQLite2 だと
	tables"."field
で異なる為。 ※ DBを切り替えたらキャッシュを削除しないと混乱する。
最小限の修正手順... ▼

続きを読む "Ethna で SQLite の試み" »

2013年06月07日

PHP5.3.3 から sqlite2 をアクセス

PHP から、PEAR::DB を介して sqlite2 データベースを使用する。
CentOS release 6.4 (Final), CentOS release 5.9 (Final)
PHP Version 5.3.3
 DB 1.7.14 stable
 PEAR 1.9.4 stable
構築手順... ▼

続きを読む "PHP5.3.3 から sqlite2 をアクセス" »

2012年07月17日

簡単なフォームメール

フォームメールのASPをシンプルで自分好みにカスタマイズ可能にした フォームメール Version1.0 をベクターに公開。
formmail.zip 41,227 bytes
MD5 53a1a1026ac10dd3cd863e6598a845f4
サンプルは https://remix.asia/service/formmail/
動作環境条件:PHPのフレームワーク ethna が動作する環境

html,css が分かればデザインはもちろん、入力項目や構成を変更するにはphp ソースを拡張。

2011年08月27日

vps でフレームワーク ethna 導入

●pear がインストールされているか確認
[root@www ~]# yum list installed | grep php-pear
●なければ pear をインストール
[root@www ~]# yum info php-pear
[root@www ~]# yum -y install php-pear
●pear バージョン確認
[toshi@www ~]$ pear version
PEAR Version: 1.4.9
PHP Version: 5.1.6
Zend Engine Version: 2.1.0
Running on: Linux www.remix.asia 2.6.18-308.4.1.el5 #1 SMP Tue Apr 17 17:08:00 EDT 2012 x86_64
[root@www ~]# pear list
Installed packages, channel pear.php.net:
=========================================
Package          Version State
Archive_Tar      1.3.1   stable
Console_Getopt   1.2     stable
DB               1.7.14  stable
PEAR             1.4.9   stable
Structures_Graph 1.0.4   stable
XML_RPC          1.5.0   stable
XML_Util         1.2.1   stable
●pear バージョンが低ければアップグレード
[root@www ~]# pear list-upgrades
[root@www ~]# pear upgrade-all
[root@www ~]# pear upgrade --force Archive_Tar
[root@www ~]# pear upgrade --force Console_Getopt
[root@www ~]# pear upgrade --force PEAR
●ethna インストール設定
[root@www ~]# pear channel-discover pear.ethna.jp
Adding Channel "pear.ethna.jp" succeeded
Discovery of channel "pear.ethna.jp" succeeded
●ethna インストール
[root@www ~]# pear install -a ethna/ethna
WARNING: "pear/DB" is deprecated in favor of "pear/MDB2"
downloading Ethna-2.5.0.tgz ...
Starting to download Ethna-2.5.0.tgz (241,455 bytes)
..................................................done: 241,455 bytes
downloading DB-1.7.14.tgz ...
Starting to download DB-1.7.14.tgz (133,103 bytes)
...done: 133,103 bytes
downloading Smarty-2.6.26.tgz ...
Starting to download Smarty-2.6.26.tgz (67,946 bytes)
...done: 67,946 bytes
downloading simpletest-1.1.0.tgz ...
Starting to download simpletest-1.1.0.tgz (289,405 bytes)
...done: 289,405 bytes
install ok: channel://pear.ethna.jp/Ethna-2.5.0
install ok: channel://pear.php.net/DB-1.7.14
install ok: channel://pear.ethna.jp/Smarty-2.6.26
install ok: channel://pear.ethna.jp/simpletest-1.1.0

続きを読む "vps でフレームワーク ethna 導入" »

2011年08月26日

vps で php 導入

実践ハイパフォーマンスMySQL●php がインストールされているか確認
[root@www ~]# yum list installed | grep php
●なければ php をインストール
[root@www ~]# yum info php
[root@www ~]# yum -y install php
●php でマルチバイトストリング(日本語)を使えるか確認
[root@www ~]# yum list installed | grep php-mbstring
[root@www ~]# yum info php-mbstring
●なければ php-mbstring をインストール
[root@www ~]# yum -y install php-mbstring
●php から mysql を使用できるか確認
[root@www ~]# yum list installed | grep php-mysql
[root@www ~]# yum info php-mysql
●なければ php-mysql をインストール
[root@www ~]# yum -y install php-mysql

続きを読む "vps で php 導入" »

2010年03月06日

プレイスフォルダの IN(?)

ethna では、WHERE句のIN(?)で配列を渡せる。これに慣れ、複数レコードの一括更新でPEAR::DBを記述する時つい
    $ethnadb =& $this->backend->getDB();
    $peardb  =& $ethnadb->db;
    $stmt = "UPDATE tablename SET fieldname=? WHERE cd IN(?)";
    $cd = array( 10, 20, 30 );
    $data = array( 99, $cd );
    if( DB::isError( $peardb->query( $stmt, $data ) ) ){
        :
    }
    $this->backend->log( LOG_INFO, '[%s]', $peardb->last_query );
残念ながら、プレイスフォルダの IN(?) に配列は展開されない。
    $cd = implode( ',', $cd );
が必要。

2009年10月24日

環境変数をsmartyで出力

{$smarty.server.PHP_SELF}
{$smarty.server.argv}
{$smarty.server.argc}
{$smarty.server.GATEWAY_INTERFACE}
{$smarty.server.SERVER_ADDR}
{$smarty.server.SERVER_NAME}
{$smarty.server.SERVER_SOFTWARE}
{$smarty.server.SERVER_PROTOCOL}
{$smarty.server.REQUEST_METHOD}
{$smarty.server.REQUEST_TIME}
{$smarty.server.QUERY_STRING}
{$smarty.server.DOCUMENT_ROOT}
{$smarty.server.HTTP_ACCEPT}
{$smarty.server.HTTP_ACCEPT_CHARSET}
{$smarty.server.HTTP_ACCEPT_ENCODING}
{$smarty.server.HTTP_ACCEPT_LANGUAGE}
{$smarty.server.HTTP_CONNECTION}
{$smarty.server.HTTP_HOST}
{$smarty.server.HTTP_REFERER}
{$smarty.server.HTTP_USER_AGENT}
{$smarty.server.HTTPS}
{$smarty.server.REMOTE_ADDR}
{$smarty.server.REMOTE_HOST}
{$smarty.server.REMOTE_PORT}
{$smarty.server.SCRIPT_FILENAME}
{$smarty.server.SERVER_ADMIN}
{$smarty.server.SERVER_PORT}
{$smarty.server.SERVER_SIGNATURE}
{$smarty.server.PATH_TRANSLATED}
{$smarty.server.SCRIPT_NAME}
{$smarty.server.REQUEST_URI}
{$smarty.server.PHP_AUTH_DIGEST}
{$smarty.server.PHP_AUTH_USER}
{$smarty.server.PHP_AUTH_PW}
{$smarty.server.AUTH_TYPE}
{$smarty.server.PATH_INFO}

http://php.net/manual/ja/reserved.variables.server.php

2009年10月06日

16進表記文字列をバイナリデータに変換する

前回の「MD5値をキーとして利用する」の md5() 第2パラメータによるバイナリデータの取得は、php5が必要。

php4では使えない md5( '001', true ); の代替方法は

続きを読む "16進表記文字列をバイナリデータに変換する" »

2009年10月05日

MD5値をキーとして利用する

md5( '001' );

dc5c7986daef50c1e02ab09b442ee34f
128ビット(16バイト)データを1バイト2桁の16進表記で32桁の文字列。
もう少し短く表現するには

続きを読む "MD5値をキーとして利用する" »

2009年10月04日

パスワードのハッシュ値 照合

パスワードなどはMD5で保存し、ログイン時は入力値のMD5と保存値を照合して認証。
MD5値は128ビット(16進表記で32文字)の有限長の為、異なる入力値で同じMD5値の可能性があるはず。
数学的な値は検証していないが、次のような工夫を施す。

続きを読む "パスワードのハッシュ値 照合" »

About php

ブログ「Remix.asia」のカテゴリ「php」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。

前のカテゴリはOSです。

次のカテゴリはretouchです。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。