ホーム > PHP5

PHP5のアーカイブ

使えるネットのVPSでPHPの設定

  • 2010/8/26 木曜日 15:23:41
  • PHP5 | VPS

使えるネットのVPSでPHPをドメインごとに設定する場合のメモ。
/var/www/vhosts//confディレクトリの中に、vhost.confとvhost_ssl.confを設置して下記のように設定する。通常はどちらも同じ内容を設定する。同じディレクトリ内にhttpd.includeというファイルがあるが、自動的に生成されるものなのでこれを書き替えても意味がない。

<Directory /var/www/vhosts/<domain name>/httpdocs>
	<IfModule sapi_apache2.c>
		php_admin_flag engine on
		php_admin_flag safe_mode off
		php_admin_value open_basedir "/var/www/vhosts/<domain name>/httpdocs:/tmp"
	</IfModule>
	<IfModule mod_php5.c>
		php_admin_flag engine on
		php_admin_flag safe_mode off
		php_admin_value open_basedir "/var/www/vhosts/<domain name>/httpdocs:/tmp"
	</IfModule>
</Directory>

今回、この<Directory>タグを忘れてしまい、なかなかPHPの変更が反映せず無駄に時間を使ってしまった。

他にも、php_admin_value include_pathを設定した場合、php_admin_value open_basedirにも同じパスを設定しないとファイルを読み込めなかった。

vhost.confとvhost_ssl.confの設定が終わったら次のコマンドで変更を反映して、apacheを再起動する。

/usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=<domain name>
apachectl configtest
apachectl graceful

【最近の検索キーワード】zencart warning php5.3

きっと、これはZen Cartの問題ではなくPHP5.3の制限によるエラー表示があるのでしょう。

PHP5.3には推奨されない機能があり、それらを使用するとエラーが山ほど表示されます。

PHP 5.3.x で推奨されない機能

http://www.php.net/manual/ja/migration53.deprecated.php

自分のソースコードの中では使用していなくてもPEARを利用していると同じようにエラーがでることがあります。

ereg関数などはたくさん使用されていると思いますが、これを書き直すのは正規表現に慣れていないと面倒です。

そこで、

php.iniでは、

error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED

またはプログラム内で

error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);

とするとエラーが消えると思います。
(私はまだ試していません)

楽天API とPHP5で商品検索

楽天APIを使って商品を検索する機能を作った。
データの取得はいろなサイトのサンプルを参考にすると意外に簡単に実現できる。
手間取ったのは検索数の取得だ。
simplexml_load_string関数で$xmlにデータを格納できたら、
$xml->Body->ItemSearch->Items->Item[0]->itemName
などのようにして商品名は確認できる。
検索数はcountというフィールド名にあることは出力パラメータからわかっているが、
$xml->Body->ItemSearch->Items->countとしても何もない。
リクエストURLを作成して、ブラウザで結果を表示させると名前空間が違うことがわかった。

$xml->Body->ItemSearch->count

として、結果をvar_dump関数で確認すると、

object(SimpleXMLElement)#7 (1) {
  [0]=>
  string(4) “6206″
}

と表示される。

print $xml->Body->ItemSearch->count;

では、6206だけが表示される。
念のため、

$count =  (string)($xml->Body->ItemSearch->count);

として検索数を取得できた。

// PHP5
$tmpData = file_get_contents(‘ここに楽天APIの形式のURLを記述’);
$tmpData = str_replace(‘header:Header’, ‘Header’, $tmpData);
$tmpData = str_replace(‘itemSearch:ItemSearch’, ‘ItemSearch’, $tmpData);
$xml = simplexml_load_string($tmpData);

// 検索数を取得
$count =  (string)($xml->Body->ItemSearch->count);

osCommerce alter PHP5対応 backup.phpが動作しない

管理画面のデータベースバックアップ機能が動作しない。
バックアップを実行すると画面が白く表示されるだけだ。
PHPプログラムにはミスがなく、設定が間違っていそうだとは思ったが、
調べてみると原因が2つもあって、修正に時間がかかった。

ひとつめはメモリーリミットの設定。PHP5.2のデフォルトが124Mらしいので、
そのとおりに設定したがダメ。
PHPにメモリーリークがあるときの設定が、
「-1」(無制限)なので、これを設定した。
このスクリプトを実行するときだけの設定にするため、設定をPHPファイル内部に記述。

ふたつめの設定変更はプログラムの実行時間の制限。
通常30秒に設定されているが、修正したosCommerceのデータ処理は105秒かかった。
15秒足して120秒に変更した。

pleskを使用したサーバなので、

vi /var/www/vhosts/ドメイン/conf/vhost.conf
vi /var/www/vhosts/ドメイン/conf/vhost_ssl.conf

これらのファイルに
<Directory /var/www/vhosts/ドメイン/httpdocs>
    php_admin_flag safe_mode off
    php_admin_value max_execution_time 120
    php_admin_value max_input_time 120
</Directory>

を書き込んで

最後に、ファイルを読み込ませて、
/usr/local/psa/admin/sbin/websrvmng –reconfigure-vhost –vhost-name=ドメイン

Apacheを再起動した。
service httpd restart graceful

これでバックアップできた。

oScommerce alter の PHP5, MySQL5 対応作業

PHP5対応作業も、MySQL対応作業も順調に終わり先日納品したが、
なぜか、メールが送信できなかった。開発環境では十分にテストして
送信に問題はなかったのだが、調べてみるとPHPのsafe_modeにひかかっていた。

この設定になるとmail関数の5番目のパラメータが無効化されるため、
5番目のパラメータを使用する「sendmail」の設定(osCommerce管理画面)ではメールが送信できない。
苦し紛れに「smtp」に設定して送信しても、
メールが2重に送信される不具合がでるのでやめたほうがいい。

safe_modeをonのまま正常にメールを送信するには送信部の大幅な書き換えが必要なため、
オープンが近い今回はやめて、safe_modeを下記の手順でoffにした。
サーバのコントロールパネルがPleskなので他のサーバとは勝手が違う。

vi /var/www/vhosts/ドメイン/conf/vhost.conf
vi /var/www/vhosts/ドメイン/conf/vhost_ssl.conf

ssl用にもファイルを作って、必要なディレクトリに対して、必要な項目だけを設定する。

<Directory /var/www/vhosts/ドメイン/httpdocs>
 php_admin_flag safe_mode off
</Directory>

上記のようなかんじでSSL側も同じものを設定する。

/usr/local/psa/admin/sbin/websrvmng –reconfigure-vhost –vhost-name=ドメイン
service httpd restart

最後に、この順番で設定ファイルを読み込み、Apacheを再起動するとsafe_modeがOffになる。

 

 

ホーム > PHP5

検索
フィード
メタ情報

ページの上部に戻る