ラベル PHP の投稿を表示しています。 すべての投稿を表示
ラベル PHP の投稿を表示しています。 すべての投稿を表示

2022年3月5日土曜日

LaravelをApache2でルーティングさせる

Laravelは専用サーバでもApacheでも表示させることはできるが、Apacheでルーティングさせるにはrewrite機能が必要

そのためそのままでルーティングさせたページを表示してもNot Foundになる


$ apache2 -v
Server version: Apache/2.4.38 (Debian)


Debian系の場合Apache2の設定ファイルは /etc/apache2 にある apache2.conf
になる。(昔はhttpd.conf)

一枚に書かれていたhttpd.confと違いモジュール等がツリー形式にリンクされている。

/etc/apache2/
# |-- apache2.conf
# | `--  ports.conf
# |-- mods-enabled
# | |-- *.load
# | `-- *.conf
# |-- conf-enabled
# | `-- *.conf
# `-- sites-enabled
# `-- *.conf

モジュール有効化も直接書き換える形から a2enmod コマンドで有効化する形になっているので mods-available ディレクトリに rewrite.load があるか確認


$ ls mods-available/
..... request.load allowmethods.load     dav_lock.load
mime_magic.conf      rewrite.load

確認できたらモジュール有効化

$ sudo a2enmod rewrite

そして apache2.conf にある AllowOverride を All に書き換える

$ sudo vi /etc/apache2/apache2.conf

<Directory /var/www/>
        Options Indexes FollowSymLinks
        # AllowOverride None 
        AllowOverride All  # NoneからAllへと変更
        Require all granted
</Directory>


Apache2を再起動

$ sudo service apache2 restart

これでルーティングされたページを開いてもちゃんと表示される。









2015年7月10日金曜日

PHPのdateのdefalt timezone set Warnig

PHPでのDate Warning


PHP環境を構築してdate関係の関数を使うとこんなふうな警告を受けることが有ります。

 It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier.

これは書いてあるとおり、date.timezoneの設定がされていないということです。システムから読み込んで使う時刻は安全でないので、php.iniに運用する場所のtimezoneを設定してください。

phpinfo()関数でphp.iniのパスとdate.timezoneが設定されているか確認して下さい。


; Defines the default timezone used by the date functions
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
; date.timezone =

になっている部分を

; Defines the default timezone used by the date functions
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
date.timezone = "Asia/Tokyo"

に変えてサーバーをrestart

反映されて警告が出なければ成功です。

CLIでもDate Warningが出る場合


CLIの呼び出すPHP環境が違うものを使っているかもしれません。
CLIの環境は以下のコマンドで確かめられます。

# php --ini

Loaded Configuration File:  というのがCLI版php.iniの場所です。




2011年6月14日火曜日

PHP4とPHP5のコンストラクタの動作の違い

PHP4からPHP5へのオブジェクト関連の変更でマジックメソッドが追加されてますが、このマジックメソッドの仕様は不思議な動作をするようでたまに問題が指摘されてます。
多分に漏れず、初心者がはまりそうな部分を書いておきます。

__constructによるコンストラクタの継承による不具合発生。

PHP4までの親コンストラクタの継承は「$this->親クラス名」で継承されていましたが__constructで書こうとすると思わぬエラーが出ることがあります。

Smartyの拡張セットアップも「$this->Smarty();」となっていますね。
http://www.smarty.net/docsv2/ja/installing.smarty.extended.tpl

これを「parent::__construct()」で継承するまではいいのですが、親コンストラクタのほうを__constructに変更するとエラーが出ます。

class Test {
 public function __construct() {
  echo "Testコンストラクタです\n";
 }
}

class TestChild extends Test {
 public function __construct() {
  $this->Test(); //エラー
  echo "TestChildのコンストラクタです\n";
 }
}


冷静に考えれば$thisで親コンストラクタを呼び出すこと自体変なので、新しい親コンストラクタは「parent::__construct()」で呼び出してください。

class Test {
 public function __construct() {
  echo "Testコンストラクタです\n";
 }
/*
        //古い書き方であっても大丈夫です
 public function Test() { 
  echo "Testオブジェクトを生成します\n";
 }
*/
}

class TestChild extends Test {
 public function __construct() {
  parent::__construct();
  echo "TestChildのコンストラクタです\n";
 }
}


であれば親が古い書き方であってもエラーは出ません。

NBAの1試合平均チームスタッツ (2025-26レギュラーシーズン)

前回 の元となったデータ、チーム毎の各スタッツ平均です。   team games w l win% PTS AST BLK STL ...