instalasi laravel dan requsitenya

instalasi

    PHP >= 5.5.9 , saya sarankan untuk memiliki php 7 di banding memenuhi requirement
    bisa juga memakai xampp atau sejenis
    composer
    apache tidak terlalu di perlukan karena mirip dengan ionic sehingga bisa memakai command

    php artisan serve

untuk mac , linux , maupun windows akan sangat memerlukan terminal / command prompt untuk create project
sehingga pemahaman tentang global path akan sangat di perlukan

ketika masuk melalui terminal pastikan versi php anda sesuai dengan minimum atau lebih besar dengan cara

php -v

php version check

kemudian instalasi composer, untuk composer ini di perlukan layaknya maven atau ant di pemrograman java , composer bertugas untuk memenuhi segala dependency yang di perlukan oleh laravel dan yang sedikit mengejutkan adalah laravel memerlukan dependency dari symphony cara instalasi composer adalah ( dapat di lihat di https://getcomposer.org/doc/00-intro.md ) sebagai berikut

    https://getcomposer.org/download/

php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);”

php -r “if (hash_file(‘SHA384’, ‘composer-setup.php’) === ‘e115a8dc7871f15d853148a7fbac7da27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae’) { echo ‘Installer verified’; } else { echo ‘Installer corrupt’; unlink(‘composer-setup.php’); } echo PHP_EOL;”

php composer-setup.php

mv composer.phar /usr/local/bin/composer

php -r “unlink(‘composer-setup.php’);”

    instalasi laravel
    composer global require “laravel/installer”
    pada command prompt / terminal lakukan

    laravel new blog

sebagai tambahan untuk path di mac adalah sebagai berikut
which php -> /usr/bin/php
nano ~/.bash_profile -> tambahkan export PATH=/Applications/XAMPP/bin/:$PATH
save
source ~/.bash_profile

dan silahkan ketik php -v untuk dapat menggunakan php dari xampp di terminal / commandpromt

cara memperbaiki kesalahan file user akses

untuk mengembalikan secara mudah kesalahan yang di perbuat ketika melakukan chmod biasanya karena /* yakni dengan melakukan

yang ini di pergunakan untuk memperbaiki direktori kepanjangan dari direktori / directory

find . -type d -name \var\www\html\* -exec chmod 775 {} \;

ini untuk memperbaiki file dari -type f ( file )

find . -type f -name \var\www\html\* -exec chmod 664 {} \;

 

sehingga dengan mengeksekusi kedua perintah tersebut maka dapat di pastikan file anda minimal sudah kembali terproteksi untuk berada di udara terbuka 😀

membuat environment development testing dan production

pada yii di index file kita akan merubah / menambah

[code]
//choose environment development
$appEnv = filter_input(INPUT_ENV, ‘APPLICATION_ENV’, FILTER_SANITIZE_ENCODED);
$serverName = filter_input(INPUT_SERVER, "SERVER_NAME", FILTER_SANITIZE_SPECIAL_CHARS);
if (!isset($appEnv)) {
if (true === stripos($serverName, ‘localhost’)) {
$appEnv = "development";
} else
if (true === stripos($serverName, ‘www.meltonice.com’)) {
$appEnv = "testing";
} else
if (true === stripos($serverName, ‘www.kresna.host’)) {
$appEnv = "production";
} else {
$appEnv = "development";
}
}
if ($appEnv == "production") {
$config = dirname(__FILE__) . ‘/protected/config/production.php’;
}
if ($appEnv == "development") {
// remove the following lines when in production mode
defined(‘YII_DEBUG’) or define(‘YII_DEBUG’, true);
$config = dirname(__FILE__) . ‘/protected/config/main.php’;
}
if ($appEnv == "testing") {
$config = dirname(__FILE__) . ‘/protected/config/testing.php’;
}

[/code]

sehingga kita dapat membuat file config masing2 dan tanpa repot untuk merubah setting dan konfigurasi untuk database, logging dan lain sebagainya 😀

redirect dengan count down

sebelum saya tertidur karena mengantuk dan kondisi kurang fit saya akan membagikan info tentang bagaimana redirect menggunakan ajax beserta count down js 😀

pertama install ecountdown action

lalu set flash yang akan di tampilkan beserta countdownnya dan ajax request

[code]
<?php if (Yii::app()->user->hasFlash(‘order’)) { ?>

<div class="flash-success">
<?php echo Yii::app()->user->getFlash(‘order’); ?>
</div>
<?php
$this->widget(‘ext.ecountdownaction.ECountdownAction’, array(
‘seconds’ => 10, //8 seconds
‘action’ => ‘   $.ajax(
{
type: "POST",
url: location.pathname+"/index.php?r=site/redirect",
success: function (results)
{
obj = JSON.parse(results);

window.location.href=obj.redirect;
}
});’, //action code…
)
);
}
//
//$this->redirect(array(‘user/registration’), array(‘model’ => new LoginForm));
?>

[/code]

 

lalu pada controller

[code]
public function actionRedirect() {
echo json_encode(array(‘redirect’ => $this->createUrl(‘/user/registration’)));
}

[/code]

 

cukup sederhana tapi membuat pusing LOL

install composer via brew :D

ketika akan menginstall yii2 di mac osx yang memakai composer , kemudian muncul error sebagai berikut :

 brew install composer PHP Warning:  Module ‘curl’ already loaded in Unknown on line 0 composer: Missing PHP53, PHP54, PHP55 or PHP56 from homebrew-php.

 

kemudian saya mengatasi nya dengan browsing di google dan menemukan source yang memberikan tulisan sebagai berikut :

brew install php56

kemudian ternyata masih belum bisa memakai composer 🙁

masih harus doing this ->

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

dan somehow 
tidak bisa memakai php composer.phar jadi hanya memakai composer saja 😀

php extension untuk mac osx maverick

http://stackoverflow.com/questions/6588174/enabling-postgresql-support-in-php-on-mac-os-x

The PHP version that comes bundled with OS X doesn’t include PostgreSQL. You’ll have to compile the extension yourself. Here are some instructions:

  1. Find your version of PHP: php -v.
  2. Download the version of PHP that matches yours: curl -O http://us.php.net/distributions/php-5.3.3.tar.gz. (This example downloads PHP 5.3.3 but this must match your version)
  3. Extract the archive you downloaded: tar -xzvf php-5.3.3.tar.gz
  4. Change to the PostgreSQL’s extension directory: cd php-5.3.3/ext/pgsql/
  5. Type phpize.
  6. Type ./configure.
  7. Type make.
  8. Type sudo make install.
  9. Add the extension to you php.ini file by adding extension=pgsql.so. (You may already have done this)
  10. Restart Apache.

Update for OS X Mountain Lion Apple has removed autoconf from the newer versions of XCode so the procedure above will fail at #5. To solve that problem:

  1. Type /usr/bin/ruby -e "$(/usr/bin/curl -fksSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)". *->kecuali yang ini tidak bisa di pakai
  2. Type sudo chown -R $USER /usr/local/Cellar.*->ini juga gak perlu
  3. Type brew update.
  4. Type brew install autoconf.

That should install autoconf and allow you to install the module using the instructions above.

*tutorial di atas juga dapat di gunakan untuk curl ataupun extension yang lain untuk php extension ketia bermasalah

 

**note untuk install mcrypt harus install terlebih dahulu libmcrypt yang bisa di download di sini

  1. cd libmcrypt-2.5.8
  2. ./configure
    make
    sudo make install

kalau sudah baru lanjutkan di php/ext/mcrypt

phpize ./configure dan seterusnya

 

 

logging pada yii web apps

sering kali kita perlu untuk melakukan logging pada saat development, testing maupun production berikut adalah cara untuk setting loggin

[code]

‘log’ => array(
‘class’ => ‘CLogRouter’,
‘routes’ => array(

//disini di gunakan untuk file log
array(
‘class’ => ‘CFileLogRoute’,
‘levels’ => ‘info,trace’,
‘categories’ => ‘system.*’,
),

//di sini di gunakan untuk profiling database
array(‘class’ => ‘CProfileLogRoute’,
‘report’ => ‘summary’,),

//disini di gunakan untuk web log route yang akan di munculkan di halaman paling bawah website
array(
‘class’ => ‘CWebLogRoute’,
),

// ini adalah fitur yang paling penting ketika production yang akan mengirimkan log berupa info, trace, error dan warning terkecuali yang masuk class system.base.cmodule dan , system.db, systemcmodule , system.web.filters
array(
‘class’ => ‘CEmailLogRoute’,
‘levels’ => ‘info,trace,error, warning’,
’emails’ => ‘freddokresna@gmail.com’,
‘except’ => ‘system.base.CModule.* ,system.db.*, system.CModule.*,system.web.filters.CFilterChain’,
),
),
),

[/code]

untuk profiling database bisa di lihat di profiling database

membuat profiling untuk YII

pada index.php

[code]

Yii::beginProfile(‘blockID’);
Yii::createWebApplication($config)->run();

Yii::endProfile(‘blockID’);

[/code]

 

pada config di database kita set

[code]
‘db’ => array(
‘connectionString’ => ‘mysql:host=127.0.0.1:3306;dbname=mydb’,
’emulatePrepare’ => true,
‘username’ => ‘freddokresna’,
‘password’ => ‘freddokresna’,
‘charset’ => ‘utf8’,
‘enableProfiling’ => true,
),

[/code]

sehingga kita akan bisa melihat hasil profilling time dari query2 yang kita lakukan

membuat multiple application environment

pada web apps kita sering mempunyai beberapa settingan berbeda untuk koneksi database dan fitur config lainnya

mulai dari stage development, testing hingga production

berikut adalah cara untuk setting multiple app environment pada YII framework

sebagai contoh berikut adalah setting yang saya pakai di index.php

[code]

//choose environment development
$appEnv = filter_input(INPUT_ENV, ‘APPLICATION_ENV’, FILTER_SANITIZE_ENCODED);
$serverName = filter_input(INPUT_SERVER, "SERVER_NAME", FILTER_SANITIZE_SPECIAL_CHARS);
if (!isset($appEnv)) {
if (FALSE === stripos($serverName, ‘localhost’)) {
$appEnv = "development";
} else
if (FALSE === stripos($serverName, ‘www.meltonice.com’)) {
$appEnv = "testing";
} else
if (FALSE === stripos($serverName, ‘www.usa4u.com’)) {
$appEnv = "production";
} else {
$appEnv = "development";
}
}
if ($appEnv == "production") {
$config = dirname(__FILE__) . ‘/protected/config/production.php’;
}
if ($appEnv == "development") {
$config = dirname(__FILE__) . ‘/protected/config/main.php’;
}
if ($appEnv == "testing") {
$config = dirname(__FILE__) . ‘/protected/config/testing.php’;
}

[/code]

jasper server error php sample

sangat excited ketika mencoba menginstall jasper server karena ada fitur baru pada jasper server 5.5 dengan integrasi pada php

karena saya menggunakan php 5.5 dan sample menggunakan php 5.3 muncul banyak error

*yang paling penting baca dulu readme nya karena harus install pear dan netdime

berikut error yang di temukan adalah adanya karakter ‘&’

pada
function ws_runReport($uri, $report_params, $output_params, &$attachments )

*yang saya juga baru tau kalau ada variable seperti itu di php :))

membandingkan tanggal pada PHP

cara membandingkan tanggal yang baik pada PHP adalah sebagai berikut

$tanggal = ‘2010-10-31’;

strtotime($tanggal) > strtotime(‘now’)

dengan script di atas maka perbandingan tidak akan berjalan , karena $tanggal bukan sebagai datetime , maka untuk bisa di bandingkan dengan baik maka

$tanggal = ‘2010-10-31 00:00:00’;

karena jika tidak di isi timenya maka perbandingan tidak bisa berjalan dengan baik pada xubuntu 13 saucy salamander dan php 5.5

Yii localization date format indonesia

cara mudah untuk lokalisasi bahasa dengan YII

pada main.

[php]
‘preload’ => array(‘log’),
‘sourceLanguage’ => ‘id’,

[/php]

pada setiap model yang kita punya tambahkan

[php]
protected function afterFind() {

foreach ($this->metadata->tableSchema->columns as $columnName => $column) {

if (!strlen($this->$columnName))
continue;

if ($column->dbType == ‘date’) {
$this->$columnName = Yii::app()->dateFormatter->formatDateTime(
CDateTimeParser::parse($this->$columnName, ‘yyyy-MM-dd’), ‘medium’, null);
} elseif ($column->dbType == ‘datetime’) {
$this->$columnName = Yii::app()->dateFormatter->formatDateTime(
CDateTimeParser::parse($this->$columnName, ‘yyyy-MM-dd hh:mm:ss’));
}
}
return true;
}

[/php]

dan untuk mempermudah lagi gunakan before save

[php]
<pre>protected function beforeSave(){
foreach($this->metadata->tableSchema->columns as $columnName => $column){
if ($column->dbType == ‘date’){
$this->$columnName = date(‘Y-m-d’, CDateTimeParser::parse($this->$columnName, Yii::app()->locale->dateFormat));
}elseif ($column->dbType == ‘datetime’){
$this->$columnName = date(‘Y-m-d H:i:s’, CDateTimeParser::parse($this->$columnName, Yii::app()->locale->dateFormat));
}

}

return true;
}

[/php]

dari pada anda harus merubah satu persatu String
seperti di bawah ini

[php]
date(‘Y-m-d’,now());
[/php]

untuk setiap kali penggunaan date dan

[php]
date(‘Y-m-d’ strtotime($model->tanggal));
[/php]

untuk setiap kali anda posting tanggal maupun datetime format

cara kirim email dengan php pada sll atau tls

[php]

$host = "ssl://mail.bernofarm.co.id";
$port = "465";
$username = "freddo@bernofarm.co.id";
$password = "freddo";

$headers = array(‘From’ => $from,
‘To’ => $to,
‘Subject’ => $subject);
$smtp = Mail::factory(‘smtp’, array(‘host’ => $host,
‘port’ => $port,
‘auth’ => true,
‘username’ => $username,
‘password’ => $password));
//    echo "to = " . $to;
//    echo "<br>subject = " . $subject;
echo "<br> Headers =" . $headers;
var_dump($headers);
$mail = $smtp->send($to, $headers, $body);
$mails = $smtp->send($from, $headers, $body);
//    $mail = $smtp->send($to, $headers, $body);

if (PEAR::isError($mail) && PEAR::isError($mails)) {
echo("<p>" . $mail->getMessage() . "</p>");
} else {
echo("<p>Message successfully sent!</p>" . $reportSentToMail);
}

[/php]

membuat applikasi chat dengan YII

download https://bitbucket.org/christiansalazarh/yiichat

ekstract di protected/extensions/

pada main.php setting

[php]

‘imports’=>array( ‘application.extensions.yiichat.*’, ),

[/php]

pada site controller

[php]

class SiteController extends Controller {

public function actions() {

return array(
‘captcha’=>array(
‘class’=>’CCaptchaAction’, ‘backColor’=>0xFFFFFF, ),
‘page’=>array( ‘class’=>’CViewAction’, ),</pre>
‘yiichat’=>array(‘class’=>’YiiChatAction’), //
}
[/php]

pasang widget pada index.php

[php]
<h1>Yii Chat Demo</h1>
<div id=’chat’></div>
<?php $this->widget(‘YiiChatWidget’,
array( ‘chat_id’=>’123’, // a chat identificator ‘identity’=>1,
// the user, Yii::app()->user->id ? ‘selector’=>’#chat’,
// were it will be inserted ‘minPostLen’=>2,
// min and ‘maxPostLen’=>10, <
// max string size for post ‘model’=>new MyYiiChatHandler(),
// the class handler. **** FOR DEMO, READ MORE LATER IN THIS DOC ****
‘data’=>’any data’, // data passed to the handler
// success and error handlers, both optionals.
‘onSuccess’=>new CJavaScriptExpression
( "function(code, text, post_id){ }"),
‘onError’=>new CJavaScriptExpression
( "function(errorcode, info){ }"), )); ?>

[/php]

voila, demo chatting sudah bisa di akses 🙂

membuat forum dengan YII

download http://www.yiiframework.com/extension/yii-forum/files/yii-forum-0.3.zip

untuk instalasi YII

extrak di folder apps/protected/modules

berikan configurasi ini di main.php

dan jangan lupa untuk membuat koneksi ke database dan mengimport sql di folder modules/forum/data

'modules'=>array(
    'forum'=>array(
        'class'=>'application.modules.yii-forum.YiiForumModule',
    ),
),

pada user identity tambahkan

 $this->setState('isAdmin', ($this->name == 'admin'));

setelah itu silahkan akses http://localhost/apps/index.php?r=forum

mengirim email dengan format html melalui email

                “Content-type: text/html; charset=iso-8859-1rn”;

di atas adalah configurasi untuk header agar email kita dalam bentuk html dapat di baca secara maksimal

$headers .= “Content-type: text/htmlrn”;

sedangkan baris di atas adalah cara mengirimkan menjadi attachment berbentuk html

$headers .= “Content-type: textrn”;

pada baris di atas juga mengirimkan attachment tetapi tanpa format html

mod_rewrite , urls , yii

setelah bergulat pada mesin pencari google untuk bagaimana membuat slug pada YII framework

terkendala pada

  1. http.conf yang ternyata berada di lokasi /etc/httpd/conf/httpd.conf
  2. tidak memperhatikan AllowOveride All
  3. hanya merubah allowoveride all pada bagian di dalam <Directory “/var/www/html”>
  4. kemudian save dan restart apache server dengan cara systemctl restart httpd.service

VOILAAA!!!!!