ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

Smartyがうごかない

PHPのSmartyがうごきません。

Smarty-2.6.16/libsを全部/usr/local/lib/Smartyに移動して、
include_pathも通ってる。はずなのに。

<?php
 require_once("DB.php"); ///usr/share/pearは通ってる
 require_once("Smarty.class.php");
?>

↓↓↓↓↓↓↓↓↓↓

Warning: require_once(Smarty.class.php) [function.require-once]: failed to open stream: No such file or directory in /var/www/html/test.php on line 3

Fatal error: require_once() [function.require]: Failed opening required 'Smarty.class.php' (include_path='.:/usr/local/lib/Smarty:/usr/share/pear') in /var/www/html/test.php on line 3

パスが通ってるのにファイルがありませんって言われる。


# ll /usr/local/lib/Smarty/Smarty.class.php
-rw-r--r-- 1 root root 63248 12月 2 00:23 /usr/local/lib/Smarty/Smarty.class.php

あるじゃん(ーー;)

# ll /usr/share/pear/DB.php
-rw-r--r-- 1 root root 42791 2月 5 17:16 /usr/share/pear/DB.php

こっちと何が違うんじゃ。


一応フルパスでも書いてみたら

<?php
 require_once("DB.php"); ///usr/share/pearは通ってる
 require_once("/usr/local/lib/Smarty/Smarty.class.php");
?>

↓↓↓↓↓↓↓↓↓↓

Warning: require_once(/usr/local/lib/Smarty/Smarty.class.php) [function.require-once]: failed to open stream: Permission denied in /var/www/html/test.php on line 3

Fatal error: require_once() [function.require]: Failed opening required '/usr/local/lib/Smarty/Smarty.class.php' (include_path='.:/usr/local/lib/Smarty:/usr/share/pear') in /var/www/html/test.php on line 3


権限がありません。なんでー・・?

[Smartyがうごかない]の続きを読む
スポンサーサイト
  1. 2007/02/27(火) 18:45:53|
  2. PHP
  3. | トラックバック:1
  4. | コメント:1

PHPの配列の結合

いつも忘れるのでメモ用
既存の配列の後ろに配列をくっつけたいときは
「+」演算子か「array_merge」関数

$ php -r "var_dump(array('a'=>1,2,'b'=>3) + array('a'=>4,'c'=>5,6));"
array(4) {
 ["a"]=>
 int(1)
 [0]=>
 int(2)
 ["b"]=>
 int(3)
 ["c"]=>
 int(5)
}

$ php -r "var_dump(array_merge(array('a'=>1,2,'b'=>3), array('a'=>4,'c'=>5,6)));"
array(5) {
 ["a"]=>
 int(4)
 [0]=>
 int(2)
 ["b"]=>
 int(3)
 ["c"]=>
 int(5)
 [1]=>
 int(6)
}
  1. 2007/02/13(火) 15:58:22|
  2. その他
  3. | トラックバック:0
  4. | コメント:0

PHPのwhileとforeach

PHPの配列総なめの書き方で、自分はいつも

 foreach($ary as $key => $val) ...
だったけれど、いろんなサイト見て回ると

 while($list($key,$val) = each($ary)) ...
みたいな書き方をよく見かけた。

1年ぐらいPHP触ってたけど、これ見るまでeach関数なんて知らなかった。
(車の免許とって3週間目みたいな、慣れてきたせいで
 一番事故起こしやすいレベルのPHP歴なんだろうなぁ)

なんかくやしかったので、
配列長100,000を二つの方法でループさせて時間計測。

while time: 0.34173083305359
foreach time: 0.11416602134705
(while/foreach)*100 = 299.32796905901

foreach time: 0.08992600440979
while time: 0.33068990707397
(while/foreach)*100 = 367.73557242356
(PHP5.1.6 Apache/2.2.3)

何回やってもforeachのほうが3~4倍早かった!
よし、くやしくなくなった。


コード
<?php
$time_while = 0;
$time_foreach = 0;

//ループさせる配列長
$length=100000;

//whileを先に計測----------------------------
$time_while = execute_while($length);
$time_foreach = execute_foreach($length);

echo "while time: ${time_while}\n";
echo "foreach time: ${time_foreach}\n";
echo "(while/foreach)*100 = ". ($time_while/$time_foreach)*100 ."\n";
echo '\n';

//foreachを先に計測--------------------------
$time_foreach = execute_foreach($length);
$time_while = execute_while($length);

echo "foreach time: ${time_foreach}\n";
echo "while time: ${time_while}\n";
echo "(while/foreach)*100 = '. ($time_while/$time_foreach)*100 ."\n";
echo '\n';
exit();

//現在時刻を取得する関数
function getmicro(){
  list($msec, $sec) = explode(" ", microtime());
  return ((float)$sec + (float)$msec);
}
//whileでlength回ループする関数
function execute_while($length){
  //配列作成
  $ary = array();
  for($i=0; $i<$length; $i++) $ary[] = "num.$i";
  //計測開始
  $time = getmicro();
  while(list($key, $val) = each($ary)) $ary[$key] = $val .= "read";
  return getmicro() - $time;
}

//foreachでlength回ループする関数
function execute_foreach($length){
  //配列作成
  $ary = array();
  for($i=0; $i<$length; $i++) $ary[] = "num.$i";
  //計測開始
  $time = getmicro();
  foreach($ary as $key=>$val) $val .= "read";
  return getmicro() - $time;
}
?>




  1. 2007/01/09(火) 20:19:57|
  2. その他
  3. | トラックバック:0
  4. | コメント:2

apache2でphp5設定

(apache2.0.54 php5.0.5)

phpのソースダウンロード
http://www.php.net/

展開
tar zxvf php5.0.5.tar.gz
cd php5.0.5


インストール
(上からapxsのパス指定、マルチバイト、マルチバイト正規表現、
 SJISで書ける、postgresqlのなにか、mysql使わない)
vi opt-configure
----------- opt-configure ------------
#!/bin/sh
./configure \
--with-apxs2filter=/usr/local/apache2/bin/apxs \
--enable-mbstring \
--enable-mbregex \
--enable-zend-multibyte \
--with-pgsql=/postgres \
--without-mysql
-------------------------------------
perl opt-configure
make
make install


PHP初期設定ファイルを配置
cp php.ini-dest /usr/local/lib/php/php.ini


apacheの設定ファイルに追加。
モジュール読んで、拡張子がphpとphtmlのファイルをphpで
パースする設定。あとついでにphpのソースも。
vi /usr/local/apache2/httpd.conf
------------httpd.conf---------------
LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
-------------------------------------


確認用のphpファイルを作る
vi /usr/local/apache2/htdocs/test.php
------------test.php---------------
<?php phpinfo();?>
-------------------------------------


apache再起動
/usr/local/apache2/bin/apachectl restart


ブラウザから(http://hostname/test.php)にアクセスして
phpの情報が出ればお疲れさま。
  1. 2005/09/13(火) 15:16:04|
  2. Apache
  3. | トラックバック:0
  4. | コメント:0
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。