<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>PHPDeveloper.org</title>
    <link>http://www.phpdeveloper.org</link>
    <description>Up-to-the Minute PHP News, views and community</description>
    <language>en-us</language>
    <pubDate>Wed, 22 May 2013 09:34:21 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[Simon Holywell: Improve PHP session cookie security]]></title>
      <guid>http://www.phpdeveloper.org/news/19584</guid>
      <link>http://www.phpdeveloper.org/news/19584</link>
      <description><![CDATA[<p>
<i>Simon Holywell</i> has a new post talking about <a href="http://simonholywell.com/post/2013/05/improve-php-session-cookie-security.html">cookie security in PHP</a>, focusing on some of the PHP configuration settings that can help.
</p>
<blockquote>
The security of session handling in PHP can easily be enhanced through the use of a few configuration settings and the addition of an SSL certificate. Whilst this topic has been covered numerous times before it still bears mentioning with a large number of PHP sites and servers having not implemented these features.
</blockquote>
<p>
He talks about the <a href="https://www.owasp.org/index.php/HttpOnly">httponly</a> flag when setting the cookie/in the configuration, the "use only cookies" for sessions and forcing them to be "secure only".
</p>
Link: http://simonholywell.com/post/2013/05/improve-php-session-cookie-security.html]]></description>
      <pubDate>Tue, 14 May 2013 14:55:37 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Juan Treminio: Introduction to Vagrant/Puppet and introducing PuPHPet]]></title>
      <guid>http://www.phpdeveloper.org/news/19582</guid>
      <link>http://www.phpdeveloper.org/news/19582</link>
      <description><![CDATA[<p>
<i>Juan Treminio</i> has <a href="http://jtreminio.com/2013/05/introduction_to_vagrant_puppet_and_introducing_puphpet_a_simple_to_use_vagrant_puppet_gui_configurator/">written up a post</a> about a new tool he's created that makes generating Vagrant/Puppet configs easy - <a href="http://puphpet.com/">PuPHPet</a>.
</p>
<blockquote>
I just released the initial version of <a href="http://puphpet.com/">PuPHPet</a>, my GUI-based gnerator for Vagrant/Puppet environments! [...] Enter PuPHPet, my GUI configurator. I have created a simple, easy to use web app that targets PHP developers and the classic LAMP stack. You will not need to learn the ins and outs of Vagrant or Puppet to build your own working VM to your specific needs. As of now you can define things like custom virtual hosts, what version of PHP to install, set up some MySQL databases, etc, all without having to touch a manifest file.
</blockquote>
<p>
<a href="https://github.com/jtreminio/Puphpet">His tool</a> (hosted version is <a href="http://puphpet.com/">here</a>) lets you define things like machine name, IP address, memory and target folder. You can pick from various server, PHP, MySQL and Apache packages you want installed as well. A custom archive (zip) file will be created that can be dropped into your system ready for use.
</p>
Link: http://jtreminio.com/2013/05/introduction_to_vagrant_puppet_and_introducing_puphpet_a_simple_to_use_vagrant_puppet_gui_configurator]]></description>
      <pubDate>Tue, 14 May 2013 12:11:18 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Rob Allen: Injecting configuration into a ZF2 controller]]></title>
      <guid>http://www.phpdeveloper.org/news/19524</guid>
      <link>http://www.phpdeveloper.org/news/19524</link>
      <description><![CDATA[<p>
<i>Rob Allen</i> has a a new post to his site today showing you how to <a href="http://akrabat.com/zend-framework-2/injecting-configuration-into-a-zf2-controller/">inject configuration information</a> into a Zend Framework 2 controller via an interface and some initializer settings in the module setup.
</p>
<blockquote>
One thing you may find yourself needing to do is access configuration information in a controller or service class. The easiest way to do this is to use the ServiceManger's initialiser feature. This allows you to write one piece of injection code that can be applied to multiple objects. It's easier to show this in action!
</blockquote>
<p>
He includes a sample configuration file (with a setting for "setting_1") and the interface you implement to structure the load request. He then shows how to hook this into the controller and the code needed for the module "getControllerConfig" (or "getServiceConfig" for use with services) to load in the file and set it to the correct object.
</p>
Link: http://akrabat.com/zend-framework-2/injecting-configuration-into-a-zf2-controller]]></description>
      <pubDate>Tue, 30 Apr 2013 09:11:16 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Dayle Rees: Composer primer]]></title>
      <guid>http://www.phpdeveloper.org/news/19462</guid>
      <link>http://www.phpdeveloper.org/news/19462</link>
      <description><![CDATA[<p>
For those that might have heard about the <a href="http://getcomposer.org">Composer</a> package management system for PHP but haven't had the time to get into it, you should definitely check out <a href="http://daylerees.com/composer-primer">this great primer</a> from <i>Dayle Rees</i>.
</p>
<blockquote>
Composer is something special in the world of PHP. It has changed the way we handle application dependencies, and quelled the tears of many PHP developers. You see, in the olden days, when you wanted to build an application that relied on third party dependencies you would have to install them with PEAR or PECL. These two dependency managers both have a very limited set of outdated dependencies and have been a thorn in the side of PHP developers for a long time. [...] Enter composer, king of the package managers. 
</blockquote>
<p>
He jumps right in and gets into the configuration (the composer.json file) and using it to describe the package. He shows how to set up "required" resources complete with version number information. There's a bit about setting up autoloading and classmaps too. He then moves on to getting the tool installed and using the composer.json definition to load in needed packages (and development ones if needed).
</p>
Link: http://daylerees.com/composer-primer]]></description>
      <pubDate>Mon, 15 Apr 2013 12:55:09 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Lorna Mitchell: First Phing Plugin]]></title>
      <guid>http://www.phpdeveloper.org/news/19358</guid>
      <link>http://www.phpdeveloper.org/news/19358</link>
      <description><![CDATA[<p>
In the latest post to her site, <i>Lorna Mitchell</i> walks you through the creation of <a href="http://www.lornajane.net/posts/2013/first-phing-plugin">a first Phing plugin</a>, an extension to the popular PHP-based build tool.
</p>
<blockquote>
I'm a huge fan of <a href="http://phing.info/">Phing</a> and use it regularly for build and deployment tasks. Often, I'll ask about a plugin that I wish existed, and get a very courteous "patches welcome" from the nice people in the #phing channel on freenode. This has happened a few times, so I thought I should probably look at how to make a new phing plugin, this article shows you how to make the simplest thing I could think of: a simple "hello world" plugin.
</blockquote>
<p>
She points you to the location to grab the latest version of the tool (the github repository) and how to define a configuration file for your test runs. Then she includes the sample code showing how to create the "HelloTask" plugin. It takes an input value of "name" and displays a greeting when executed. She shows the syntax for defining this in the XML build file and the sample result when executed.
</p>]]></description>
      <pubDate>Mon, 25 Mar 2013 10:49:23 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Luis Atencio: Notes on Continuous Delivery - Configuration Management]]></title>
      <guid>http://www.phpdeveloper.org/news/19240</guid>
      <link>http://www.phpdeveloper.org/news/19240</link>
      <description><![CDATA[<p>
<i>Luis Atencio</i> has continued his series on continuous delivery with <a href="http://www.luisatencio.net/2013/02/continuous-delivery-notes-on.html">this second post</a>. It focuses on the first step (and one of the most important) - keeping everything configuration-related in a version control system.
</p>
<blockquote>
I will be continuing the topic on Continuous Delivery which began in my previous post: Notes on Continuous Integration; this time we will start looking at the first and most important step, Configuration Management. In the words of the authors (resource below): Configuration Management refers to the process by which all artifacts ... and the relationships between them, are stored, retrieved, uniquely identified, and modified.
</blockquote>
<p>He sets out four principles that can be used to set this process up in your workflow:</p>
<ul>
<li>Keep everything in version control
<li>Manage dependencies
<li>Manage software configuration
<li>Manage environments
</ul>
<p>
Each point has an explanation and advice on what he's found the best way to implement the functionality. He finishes with a few other pieces of advice including avoiding branching in config repositories and having good communication practices with your ops team.
</p>]]></description>
      <pubDate>Tue, 26 Feb 2013 11:55:10 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Reddit.com: How do you manage many PHP projects? Lots of VMs?]]></title>
      <guid>http://www.phpdeveloper.org/news/19223</guid>
      <link>http://www.phpdeveloper.org/news/19223</link>
      <description><![CDATA[<p>
On Reddit.com there's a discussion that centers around <a href="http://www.reddit.com/r/PHP/comments/18z2m1/how_do_you_manage_many_php_projects_lots_of_vms/">the management of VMs and PHP projects</a> in a multiple-checkout environments.
</p>
<blockquote>
I have been using a Linux install for a couple years now and it has development checkouts (and matching databases + live data) for dozens of sites. Since I create a new virtual host for each site there hasn't been any problems piling more and more projects into this system. However, this computer won't last forever. [...] Should I setup a new VM + debian install for each project (seems like a lot of work). Should I just move everything to an external drive and point the MySQL data, MongoDB data, Nginx web folders to the attached drive? How do others handle this?
</blockquote>
<p>There's several suggestions made in the comments including things like:</p>
<ul>
<li>Using <a href="http://ansible.cc/">Ansible</a> for configuration management
<li>Bundling the current linux install into one portable VM
<li>Using <a href="http://www.vagrantup.com/">Vagrant</a> for VM management
<li>Using source control that can be accessed from any device/VM
</ul>
<p>
Have a VM management method you've found useful in your development? <a href="http://www.reddit.com/r/PHP/comments/18z2m1/how_do_you_manage_many_php_projects_lots_of_vms/">Share some about it here</a>.
</p>]]></description>
      <pubDate>Fri, 22 Feb 2013 12:57:11 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Gonzalo Ayuso: Scaling Silex applications]]></title>
      <guid>http://www.phpdeveloper.org/news/19168</guid>
      <link>http://www.phpdeveloper.org/news/19168</link>
      <description><![CDATA[<p>
<i>Gonzalo Ayuso</i> has posted yet another <a href="http://gonzalo123.com/2013/02/11/scaling-silex-applications/">helpful Silex hint</a> for those using this microframework and wanting to scale up their applications past the prototype stage - an extension to allow route definition in a YAML configuration.
</p>
<blockquote>
My idea is to store this information within a Service Container (we will use Symfony's DIC). For example here we can [define] our routes.yml. [...] We need to implement one Extension for the alias "routes". We only will implement the needed functions for YAML files in this example.
</blockquote>
<p>
He includes the code for the extension ("SilexRouteExtension") that can be used to parse the "routes.yml" file to inject the custom routing into your application. This includes the pattern to match, the controller to route it to and the target method. You can also set some requirements like the request method (in this case "GET").
</p>]]></description>
      <pubDate>Tue, 12 Feb 2013 09:54:54 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Ruslan Yakushev: PHP Troubleshooting in Windows Azure Web Sites]]></title>
      <guid>http://www.phpdeveloper.org/news/19116</guid>
      <link>http://www.phpdeveloper.org/news/19116</link>
      <description><![CDATA[<p>
In the <a href="http://ruslany.net/2013/01/php-troubleshooting-in-windows-azure-web-sites/">latest post to his site</a>, <i>Ruslan Yakushev</i> looks at some simple ways you can debug your PHP-based applications running on a Windows Azure platform. 
</p>
<blockquote>
The need to diagnose and troubleshoot application's failures often comes up during deployment to a hosting environment. Some configuration settings in hosting server may differ from what application expects. Often it is not as easy to figure out the cause of the problem in a hosting environment as it is on a development machine.  I found the following techniques useful when troubleshooting errors in PHP applications hosted in Windows Azure Web Sites.
</blockquote>
<p>
He shares seven different tips, some pretty simple, others a bit more difficult requiring other software to be up and working:
</p>
<ul>
<li>Using <a href="http://php.net/phpinfo">phpinfo()</a>
<li>Checking the <a href="http://svn.php.net/viewvc/pecl/wincache/tags/1.1.0stable/wincache.php?view=co">wincache</a> settings
<li>Looking at your error logs
<li>Turning on the <a href="http://www.php.net/manual/en/errorfunc.configuration.php#ini.display-errors">display_errors</a> setting
<li>Turning on HTTP logging, detailed errors and failed request tracking in the control panel
<li>Using <a href="http://xdebug.org">XDebug</a>
<li>Getting the statistics for your ClearDB instance
</ul>]]></description>
      <pubDate>Thu, 31 Jan 2013 10:19:16 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Joshua Thijssen: Custom symfony2 config loader]]></title>
      <guid>http://www.phpdeveloper.org/news/19111</guid>
      <link>http://www.phpdeveloper.org/news/19111</link>
      <description><![CDATA[<p>
In <a href="http://www.adayinthelifeof.nl/2013/01/30/custom-symfony2-config-loader/">his latest post</a> <i>Joshua Thjissen</i> looks at the creation of a custom configuration loader for a Symfony2 application. This kind of thing is mostly useful for parsing configurations that Symfony2 doesn't already know how to parse.
</p>
<blockquote>
It happens more and more: large projects where your symfony2 site is just a small part in the big picture. Lots of additional components might even play a bigger part, especially when you are dealing with asynchronous components  which are connected through message queues for instance. [...] Our first idea is obvious: symfony2 uses by default a parameters.yml file, which gets imported by your configuration (config.yml) [...] So nothing new here and this setup works perfectly, provided that your symfony2 project is the ONLY thing that needs to be configured. As soon as you add multiple other components (like gearman or activemq workers that need to connect to solr too), they need to share this configuration. 
</blockquote>
<p>
His solution involves falling back to the INI-file format that's known as useful for several different languages and tools. Because of how Symfony2 reads these files though (only looking for "parameters") he's had to create a "ConfFileLoader" instance of the "FileLoader" that uses the <a href="http://php.net/parse_ini_file"> parse_ini_file</a> method to parse the data and return it back to the main container as parameters. He also includes the code/config you'll need to implement this custom loader into your application.
</p>]]></description>
      <pubDate>Wed, 30 Jan 2013 11:51:47 -0600</pubDate>
    </item>
  </channel>
</rss>
