Feed aggregator
Community News: Packagist Latest Releases for 05.18.2013
- kamisama/resque-status (0.0.1)
A API for saving a php-resque worker settings and status
- bear/ace (0.2.0)
Ace online editor utility
- bcen/silex-dispatcher (0.4.1)
A Silex plugin
- klein/klein (v2.0.1, v2.0.0)
A lightning fast router for PHP
- liip/rmt (0.9.6)
Release Managment Tool
- danielmewes/php-rql (1.5.1)
A PHP client driver for the RethinkDB query language (ReQL)
- n98/magerun (1.67.0, 1.66.0)
Tools for managing Magento projects and installations
- smirik/bootstrap-bundle (v2.3.2)
Simple bundle which add bootstrap css and js files to project and standard template to the form.
- adamstipak/nette-rest-route (1.1.0)
Rest route for Nette Framework
- nunzion/composer-devlinks (0.1.0)
Enables developers to autoload classes from projects outside the vendor directory. These links can replace projects inside the vendor directory and need not to be committed.
- entomb/slim-json-api (0.1)
Slim extension to implement fast JSON API's
- pscheit/psc-cms (1.1.3)
a content management system ontop of webforge.
- pihi/industrial (0.4.4)
Dependency Injection for PHP 5.3
- wrep/daemonizable-command (1.0.0)
Daemonizable (endless running) commands for Symfony2.
- yvann/urlify (1.0.0)
PHP port of URLify.js from the Django project. Transliterates non-ascii characters for use in URLs.
- rampage-php/framework (1.0.0-alpha8)
Rampage PHP Framework based on Zend Framework 2
- nunzion/php-common (0.1.0)
Commonly used php functions.
- fritz-payment/jsonrpc (0.1.0)
A general JSON RPC client.
- liip/imagine-bundle (v0.10.0)
This Bundle assists in imagine manipulation using the imagine library
- propel/propel-bundle (1.2.3)
Integration of Propel in Symfony2
- bit3/contao-nested-menu (1.0.3)
Nested menus for Contao OpenSource CMS
- jasonlewis/basset (v4.0.0-BETA1)
A better asset management package for Laravel.
DZone.com: Cloning in PHP
In this recent post over on DZone.com Giorgio Sironi takes a look at the "clone" feature of PHP - what it is, how it can be used and things to watch out for in its use.
Cloning is an operation consisting in the duplication of a data structure, usually to avoid the aliasing problem of having different code modify the same instance in inconsistent ways. In PHP, cloning can be accomplished in multiple ways - and in some cases it can be avoided altogether.He talks some about how objects are passed around internally during the PHP execution and how you can tell if a function works with data by reference (from the manual). He then looks at the "clone" keyword and what kinds of things are duplicated from an object when it is used. He briefly touches on the "__clone" magic method for solving the "shallow clone" problem and how, possibly, serializing the object might be a better alternative for reproducing the entire object.
Link: http://css.dzone.com/articles/cloning-phpPHPMaster.com: Openbiz Cubi: A Robust PHP Application Framework, Part 1
On PHPMaster.com today they've posted the first part of a series spotlighting Openbiz Cubi, a PHP "framework" with a business focus.
Openbiz Cubi is a robust PHP application framework giving developers the ability to create business applications with minimal effort. In this two-part series I'll explain the concepts and steps necessary to create your own business web applications with Cubi. We'll look first at the challenges web developers face and how Openbiz Cubi can help, and then how to install Cubi. In part 2 we'll see how to create our own modules.They start off by describing the tool and some of the features that come with it (including user management and the XML data object structure). Complete installation instructions are included and a screenshot is included of the end result. They include a "quick tour" of Cubi's features and some of the modules that come with it like the System, Menu and User modules. In part two of the series, they'll show you how to create a custom module.
Link: http://phpmaster.com/openbiz-cubi-a-robust-php-application-framework-1Chris Jones: Offline Processing in PHP with Advanced Queuing
Chris Jones has a new post today showing you how to use Oracle and PHP together to process data offline via the Oracle Streams Advanced Queuing feature.
Offloading slow batch tasks to an external process is a common method of improving website responsiveness. One great way to initiate such background tasks in PHP is to use Oracle Streams Advanced Queuing in a producer-consumer message passing fashion. [...] The following example simulates an application user registration system where the PHP application queues each new user's street address. An external system monitoring the queue can then fetch and process that address. In real life the external system might initiate a snail-mail welcome letter, or do further, slower automated validation on the address.He includes the SQL needed to create the database and configure the queue system as well as start it up and get it ready for requests. He shows how to push an address into the queue for processing and how to get the results once it has completed in both the SQL and from the oci_* functions in PHP.
Link: https://blogs.oracle.com/opal/entry/offline_processing_in_php_withCommunity News: Packagist Latest Releases for 05.17.2013
- piwik/piwik (1.12-b15)
Open Source Real Time Web Analytics Platform
- donatj/simplecalendar (v0.4.0)
A very simple calendar library
- icecave/chassis (0.3.0)
A template engine for filesystem structures.
- herrera-io/go (2.0.1, 2.0.0)
A simple PHP build tool.
- herrera-io/cli-app (1.0.2)
A simplified CLI application template built on Symfony Console.
- aporat/application_rest_controller_route (1.0.0)
RESTful Zend_Controller_Router_Route with custom defined routes
- sensio/framework-extra-bundle (v2.3.0-RC1)
This bundle provides a way to configure your controllers with annotations
- symfony/symfony (v2.3.0-RC1)
The Symfony PHP framework
- aporat/application_controller_plugin_forcessl (1.0.0)
Zend Framework 1 controller plugin that force all http requests to be under SSL
- doctrine/doctrine-module (0.7.2)
Zend Framework 2 Module that provides Doctrine basic functionality required for ORM and ODM modules
- phundament/p3pages (0.11.6)
Page Manager
- jiriknesl/mockista (1.2)
Mockista is library for mocking, which I've written, because I find mocking in PHPUnit slow.
- georgeh/php-beerxml (1.0.0)
BeerXML parser and generator
- tecnick.com/tcpdf (6.0.017)
TCPDF is a PHP class for generating PDF documents.
- havvg/lock (v1.0.0)
A component for simple resource locking.
- payum/payum-bundle (0.4.1)
The payment bundle integrates payum libs into symfony2 framework
- phundament/p3widgets (0.11.4)
Widget Manager
- zweifisch/zf (v0.2.6)
a micro php web/cli framework/router
- rah/danpu (2.4.0, 1.4.0)
MySQL database dump and restoration tool implemented in PHP
- rampage-php/framework (1.0.0-alpha7)
Rampage PHP Framework based on Zend Framework 2
- symfony/intl (v2.3.0-RC1)
A PHP replacement layer for the C intl extension that includes additional data from the ICU library.
- webignition/css-validator-output-parser (1.6.3)
Parser for output from the W3C CSS validator
- symfony/icu (v1.2.0-RC1, v1.1.0-RC1, v1.0.0-RC1)
Contains an excerpt of the ICU data and classes to load it.
- dudapiotr/zftable (0.0.2)
Flexible tool to generate table
- willdurand/email-reply-parser (1.0.0)
Port of the cool GitHub's EmailReplyParser library in PHP 5.3
- jbboehr/facebook-php-cli (1.0.0)
Facebook PHP SDK Wrapper for CLI
- kriswallsmith/assetic (v1.1.0)
Asset Management for PHP
Site News: Popular Posts for the Week of 05.17.2013
- PHPMaster.com: MongoDB Indexing, Part 2
- PHP.net: PHP 5.4.15 and PHP 5.3.25 released!
- NetTuts.com: 10 Tips for Learning a New Technology
- 7PHP.com: A Chat With Adminer - A Simple, Yet Effective, Database Management tool written in PHP
- Site News: Popular Posts for the Week of 05.10.2013
- Chris Jones: Getting Started with PHP Zend Framework 2 for Oracle DB
- Community News: Packagist Latest Releases for 05.11.2013
- MaltBlue.com: Zend Framework 2 - Hydrators, Models and the TableGateway Pattern
- Simon Holywell: Improve PHP session cookie security
- Community News: Packagist Latest Releases for 05.10.2013
Offline Processing in PHP with Advanced Queuing
Offloading slow batch tasks to an external process is a common method of improving website responsiveness. One great way to initiate such background tasks in PHP is to use Oracle Streams Advanced Queuing in a producer-consumer message passing fashion. Oracle AQ is highly configurable. Messages can queued by multiple producers. Different consumers can filter messages. From PHP, the PL/SQL interface to AQ is used. There are also Java, C and HTTPS interfaces, allowing wide architectural freedom.
The following example simulates an application user registration system where the PHP application queues each new user's street address. An external system monitoring the queue can then fetch and process that address. In real life the external system might initiate a snail-mail welcome letter, or do further, slower automated validation on the address.
The following SQL*Plus script qcreate.sql creates a new Oracle user demoqueue with permission to create and use queues. A payload type for the address is created and a queue is set up for this payload.
-- qcreate.sql connect / as sysdba drop user demoqueue cascade; create user demoqueue identified by welcome; grant connect, resource to demoqueue; grant aq_administrator_role, aq_user_role to demoqueue; grant execute on dbms_aq to demoqueue; grant create type to demoqueue; connect demoqueue/welcome@localhost/orcl -- The data we want to queue create or replace type user_address_type as object ( name varchar2(10), address varchar2(50) ); / -- Create and start the queue begin dbms_aqadm.create_queue_table( queue_table => 'demoqueue.addr_queue_tab', queue_payload_type => 'demoqueue.user_address_type'); end; / begin dbms_aqadm.create_queue( queue_name => 'demoqueue.addr_queue', queue_table => 'demoqueue.addr_queue_tab'); end; / begin dbms_aqadm.start_queue( queue_name => 'demoqueue.addr_queue', enqueue => true); end; /
The script qhelper.sql creates two useful helper functions to enqueue and dequeue messages:
-- qhelper.sql
-- Helpful address enqueue/dequeue procedures
connect demoqueue/welcome@localhost/orcl
-- Put an address in the queue
create or replace procedure my_enq(name_p in varchar2, address_p in varchar2) as
user_address user_address_type;
enqueue_options dbms_aq.enqueue_options_t;
message_properties dbms_aq.message_properties_t;
enq_id raw(16);
begin
user_address := user_address_type(name_p, address_p);
dbms_aq.enqueue(queue_name => 'demoqueue.addr_queue',
enqueue_options => enqueue_options,
message_properties => message_properties,
payload => user_address,
msgid => enq_id);
commit;
end;
/
show errors
-- Get an address from the queue
create or replace procedure my_deq(name_p out varchar2, address_p out varchar2) as
dequeue_options dbms_aq.dequeue_options_t;
message_properties dbms_aq.message_properties_t;
user_address user_address_type;
enq_id raw(16);
begin
dbms_aq.dequeue(queue_name => 'demoqueue.addr_queue',
dequeue_options => dequeue_options,
message_properties => message_properties,
payload => user_address,
msgid => enq_id);
name_p := user_address.name;
address_p := user_address.address;
commit;
end;
/
show errors
The script newuser.php is the part of the PHP application that handles site registration for a new user. It queues a message containing their address and continues executing:
<?php
// newuser.php
$c = oci_connect("demoqueue", "welcome", "localhost/orcl");
// The new user details
$username = 'Fred';
$address = '500 Oracle Parkway';
// Enqueue the address for later offline handling
$s = oci_parse($c, "begin my_enq(:username, :address); end;");
oci_bind_by_name($s, ":username", $username, 10);
oci_bind_by_name($s, ":address", $address, 50);
$r = oci_execute($s);
// Continue executing
echo "Welcome $username\n";
?>
It executes an anonymous PL/SQL block to create and enqueue the address message. The immediate script output is simply the echoed welcome message:
Welcome Fred
Once this PHP script is executed, any application can dequeue the new message at its leisure. For example, the following SQL*Plus commands call the helper my_deq() dequeue function and displays the user details:
-- getuser.sql
connect demoqueue/welcome@localhost/orcl
set serveroutput on
declare
name varchar2(10);
address varchar2(50);
begin
my_deq(name, address);
dbms_output.put_line('Name : ' || name);
dbms_output.put_line('Address : ' || address);
end;
/
The
Truncated by Planet PHP, read more at the original (another 1511 bytes)
NetTuts.com: How to Write Testable and Maintainable Code in PHP
NetTuts.com has a new tutorial posted suggesting a few ways you can make testable and maintainable code in PHP applications.
Frameworks provide a tool for rapid application development, but often accrue technical debt as rapidly as they allow you to create functionality. Technical debt is created when maintainability isn't a purposeful focus of the developer. Future changes and debugging become costly, due to a lack of unit testing and structure. Here's how to begin structuring your code to achieve testability and maintainability - and save you time.There's a few concepts they cover in the tutorial including DRY (don't repeat yourself), working with dependency injection and actually writing the tests with PHPUnit. They start with a bit of code that needs some work and use the tests to help refactor it into something that can be easily mocked (using Mockery).
Link: http://net.tutsplus.com/tutorials/php/how-to-write-testable-and-maintainable-code-in-phpBob Majdak: On SQL in PHP
In a new post to his site Bob Majdak looks at using SQL in PHP and some of the challenges he's come across (some of them with his own tools). He talks about things line inline SQL, loading SQL by unique key or creating a "build object".
There is no right or wrong way, but no matter what there is no *pretty* way to do SQL inside of a PHP application. I have been having a personal debate with myself all week about how to make SQL statements nicer in an application without going to a huge DBAL package like Doctrine.He looks at each idea and provides some of the pros and cons about each of them, noting that he hasn't quite decided on which is the best method. Some sample code is included to help clarify the points, showing the "find by unique key" version and how a more complex query might be created with the "builder object."
Link: http://catch404.net/2013/05/on-sql-in-phpCommunity News: Google App Engine now Supports PHP runtime
On the Google Developers Blog (and lots of places across the web) there's a major update that Google has done for their AppEngine service - the introduction of a PHP runtime to their offerings.
App Engine 1.8.0 is now available and includes a Limited Preview of the PHP runtime - your top requested feature. We're bringing one of the most popular web programming languages to App Engine so that you can run open source apps like Wordpress. It also offers deep integration with other parts of Cloud Platform including Google Cloud SQL and Cloud Storage.You can get more information about how to use this new feature on Google App Engine site.
Link: https://gaeforphp.appspot.comPádraic Brady: Publishing Security Disclosures In Consumable Formats
Pádraic Brady has a new post today proposing that what the PHP ecosystem needs is a way to better publish security disclosures in a format that's easy to parse and deal with.
This is a branch off from a separate discussion on the PHP-FIG mailing list about other ways the Framework Interoperability Group can encourage and foster wider interoperability among its member projects (and by extension, the whole PHP community). I'll start by noting two interesting developments in recent months and one long standing best practice.The two "interesting developments" he mentions are the relatively recently released SensioLabs Security Checker that uses you Composer file to find security issues and the new entry in the latest version of the OWASP Top 10 list for "Using Components with Known Vulnerabilities". The best practice he talks about is more around the timely/responsible disclosure of vulnerabilities and how some kind of decentralized tracking of these issues that puts the responsibility back on the developers of the tool and not on one tracking resource.
Link: http://blog.astrumfutura.com/2013/05/publishing-security-disclosures-in-consumable-formats-for-simpler-aggregation-and-security-checkingCommunity News: Packagist Latest Releases for 05.16.2013
- energylab/gacela (1.0.0)
Responsive Data Mapper for PHP
- etenil/assegai (v1.2)
A full MVC framework for PHP.
- etenil/atlatl (v1.1)
A tiny and very simple micro-framework
- zeptech/utility (1.1.0)
Various helpful functionality for PHP
- starsquare/letterboxd-ics (1.0.0, 0.2.0)
Export Letterboxd diary to iCalendar format
- notifier/notifier (0.4.0)
Notifier, direct notifications.
- mandrill/mandrill (1.0.29)
API client library for the Mandrill email as a service platform
- aws/aws-sdk-php (2.3.2)
AWS SDK for PHP
- mustache/silex-provider (v1.0.0)
A Mustache service provider for Silex.
- sylius/resource-bundle (v0.2.0)
Resource component for Sylius.
- phundament/gii-template-collection (0.8.10)
Gii Template Collection
- conradkleinespel/twig-laravel4 (v1.0.3)
- phundament/p3bootstrap (0.14.1)
Bootstrap Theme for Phundament
- codeception/codeception (1.6.1.1)
BDD-style testing framework
- kdyby/autowired (v0.9.2)
Syntax sugar for working with services in Nette Framework
- simplon/facebook (0.6.4, 0.6.3)
Facebook Library
- jmikola/insecure-routes-bundle (v3.0.1)
Removes HTTPS scheme requirements from routes in your Symfony2 app (for dev/test environments).
- phery/phery (2.5.3)
XAJAX alternative, phery.js is a library in PHP that maps to all jQuery functions, DOM manipulation, meta arguments and serialization, seamless ajax integration, RESTful emulation, form submission and partial rendering views, plus its PSR-0 compatible
- bcen/silex-dispatcher (0.4.0)
A Silex plugin
- friendsofsymfony/elastica-bundle (v2.1.1)
Elasticsearch PHP integration for your Symfony2 project using Elastica
- tecnick.com/tcpdf (6.0.016)
TCPDF is a PHP class for generating PDF documents.
- alexeyshockov/colada (v1.0.0)
Collections framework for PHP
- candycms/core (3.0.6)
Core elements for candyCMS.
- rah/rah_maintenance (0.1.0)
Maintenance mode plugin for Textpattern
- rgou/doc-renderer (v1.1.0)
A Markdown/RestructuredText Renderer
- willdurand/geocoder (1.5.1)
The almost missing Geocoder PHP 5.3 library.
- fightbulc/cirrus (1.0.4)
Soundcloud API Reader Library to fetch data for users, tracks and playlists
- pagon/pagon (0.6.0)
Pagon Framework
- brainbits/fugue-icons-bundle (3.5.6)
Bundle including the fugue icon set.
- rgou/bootstrap-bundle (v0.7.5)
Twitter Bootstrap Symfony2 bundle with generator for Doctrine ORM and ODM
- eloquent/schemer (0.2.0)
Generic schema validation library for PHP, based on JSON Schema.
- rah/danpu (2.3.3, 1.3.3)
MySQL database dump and restoration tool implemented in PHP
- orno/di (1.3.0, v1.3.0)
Orno Di is a small but powerful dependency injection container with automatic resolution of dependencies.
- hwi/oauth-bundle (0.2.4)
Support for authenticating users using both OAuth1.0a and OAuth2 in Symfony2.
- symfony-cmf/routing-bundle (1.1.0-alpha1)
Symfony RoutingBundle
- kraksoft/redactor-bundle (1.0.0)
Symfony Redactor WYSIWYG Form Type
- willdurand/email-reply-parser (0.0.5)
Port of the cool GitHub's EmailReplyParser library in PHP 5.3
- mike_php_net/pq-gateway (v1.1.0)
Table/row gateway for ext-pq
- symfony/icu (v1.0.0-BETA1, v1.1.0-BETA1, v1.2.0-BETA1)
Contains an excerpt of the ICU data and classes to load it.
- slm/mail (v1.0.0-rc2)
Integration of various email service providers in the Zend Framework ZendMail
- tlikai/yii-mailer (v1.0)
YiiMailer is a mail extensions based on Yii Framework
- payum/paypal-express-checkout-nvp (0.4.1)
Paypal express checkout
- tlikai/oauth2china (v1.0)
Authorize users in you application with oauth 2.0 providers
- geekality/transposer (v1.5)
Plain text song parser and chord transposer
- geekality/timer (v1.2)
Simple class for logging time and memory usage of stuff
- geekality/website (v0.2)
My homemade MVC framework using Mustache and Less
- pswincom/pswincom-bundle (v0.1)
PSWinCom Bundle is a minimal php port/variant of the PSWINCom ruby gem library. This library supports the minimal purpose of sending sms.
Site News: Blast from the Past - One Year Ago in PHP
- Project: Gitlist - A Git Repository Viewer (based on Silex & Twig)
- Reddit.com: Protecting against attack?
- Gonzalo Ayuso's Blog: Building a simple SQL wrapper with PHP
- Fabien Potencier's Blog: Sami: Yet another PHP API documentation generator
- Lukas Smith's Blog: Query parameter handling in Symfony2
- Marcus Bointon's Blog: Compiling wkhtmltopdf on Mac OS X 10.7 Lion
- Jeremy Cook's Blog: Implementing IteratorAggregate and Iterator
- Community News: "PHP Tip a Day" Blog
- PHPMaster.com: Using SPL Iterators, Part 1
- Sean Coates' Blog: PHP as a templating language
- Engine Yard: Cloud Out Loud Podcast - MongoDB and OpenStreetMap
- Nerdery Blog: Minnesota PHP User Group (May 2012 Meeting) Recordings
- Marcelo Gornstein's Blog: Making your ivr nodes (call) flow with PAGI
- Reddit.com: Too many bugs and too much stress
- Chris Hartjes' Blog: How the Testing Sausage Gets Made
Slides: Behat & Beautiful APIs
MaltBlue.com: Zend Framework 2 - Hydrators, Models and the TableGateway Pattern
Matthew Setter has written up a post to his site that continues his look at the features of Zend Framework 2. This time he's looking specifically at hydrators, models and the table gateways and their use in connecting your application with a database.
One set of features has really been helping me of late ones that really have me smiling; these are: Hydrators, Models and Table Gateways. If you're new to ZF2 or database interaction with frameworks, then you're in a perfect position as today's post will be giving you a good introduction to the basics of using both together.He starts with a look back at how it all was done in ZF1 and shows how using these three components makes for an even better system, allowing the model to be completely data-source agnostic. His examples start with the table gateway class, showing how to connect it with a "users" table. From there he adds in the model (with an "exchangeArray" method) and a hydrator that maps the table columns to the properties on the entity. He shows how to add this setup to the service configuration and its use in a controller, returning a full list of the records in the "user" table.
Link: http://www.maltblue.com/tutorial/zendframework2-hydrators-models-tablegateway-patternChris Jones: Getting Started with PHP Zend Framework 2 for Oracle DB
In his latest post to his site Chris Jones shows you how to update the Zend Framework 2 tutorial app (quickstart) to make it work with an Oracle database instead.
This post shows the changes to the ZF2 tutorial application to allow it to run with Oracle Database 11gR2. [...] The instructions for creating the sample ZF2 application are here. Follow those steps as written, making the substitutions shown [in the rest of the post].The full schema definition is included in the post, complete with the same sample data as the tutorial. He includes the updates you'll need to make to the database configuration for the OCI8 connection and changes to the code to accommodate the Oracle data format (mostly uppercasing everything).
Link: https://blogs.oracle.com/opal/entry/getting_started_with_php_zendBrandon Savage: Compiling PHP 5.5 From Scratch
Brandon Savage has a new post to his site today showing you how to compile and install PHP 5.5, the next major upcoming release for the language (in RC status as of the time of this post though).
There's always a lag behind new releases of PHP and releases of packages for operating systems such as Ubuntu. This lag time means that you could be kept from upgrading to the latest and greatest PHP for a year or more, unless you use an outside repository like Dotdeb. [...] Instead, I roll my own version of PHP. It's simple and easy to do, and something that any developer can do. Here's my instructions for doing so on a fresh Ubuntu installation.He gives a reason or two why you might want to "roll your own" installation and helps you get the environment prepared via some "aptitude" install commands for supporting software. Commands are included for installing needed dependencies, configuring/building PHP and updating Apache to use this new install. He finishes it up with a few smaller things to do like making the php.ini and enabling the Zend opcode caching extension.
Link: http://www.brandonsavage.net/compiling-php-5-5-from-scratchPublishing Security Disclosures In Consumable Formats For Simpler Aggregation and Security Checking
This is a branch off from a separate discussion on the PHP-FIG mailing list about other ways the Framework Interoperability Group can encourage and foster wider interoperability among its member projects (and by extension, the whole PHP community). I’ll start by noting two interesting developments in recent months and one long standing best practice.
1. Launch of the SensioLabs Security Advisory CheckerThe SensioLabs Security Advisor Checker is described on its website as follows.
You manage your PHP project dependencies with Composer, right? But are you sure that your project does not depend on a package with known security issues? The SensioLabs security advisories checker is a simple tool, available as a web service or as an online application, that uses the information from your composer.lock file to check for known security vulnerabilities. This checker is a frontend for the security advisories database.
The service operates by having people submit vulnerability data, as YAML files, to a centralised Github repository through pull requests. The upside is that the vulnerability data can be peer reviewed and centrally dispersed either online or via a service API. The downside is that you need to find vulnerability disclosures and people to submit them. The service currently covers Symfony, Zend Framework, Doctrine, Twig and FriendsOfSymfony bundles. It’s a tiny sample of packages available through Composer. I’m also not entirely sure if it’s sufficiently fine grained to report vulnerabilities on a project’s sub-packages where you have no direct dependency on the aggregate package (e.g. using zendframework/zend-db instead of zendframework/zendframework). That said, this is a working model of a service for checking your dependencies.
That said, the service exhibits an ambitious idea – projects sharing their vulnerability disclosures or advisories in a way that allows for automatically checking if any of your projects need to have their dependencies updated for security reasons.
2. OWASP‘s Top 10 security risks for 2013 includes “A9 – Using Components with Known Vulnerabilities”This is a new entry onto OWASP’s Top 10 (which is currently at release candidate status for 2013). In summary, it recognises that applications are becoming ever more dependent on code not developed internally. We’ve had web application frameworks for years. Composer and Github have unleashed a storm of accessible libraries, bundles, modules, and other units of reuse that have revealed Not Invented Here (NIH Syndrome) as a psychological problem in ways not previously possible.
As reliance on externally controlled dependencies increases, so too does the risk of your applications using insecure dependencies. This is a risk that requires a lot of work to mitigate. For each dependency, you need to do a security review (no, I’m not kidding), check for security disclosures (whether voluntary or involuntary) and ensure that you end up rolling out to production with safe versions.
Quoting from the OWASP advice on preventing the use of components with known vulnerabilities…
One option is not to use compone
Truncated by Planet PHP, read more at the original (another 4681 bytes)
How we organize our websites
We recently migrated Where’s it Up to our fancy new hardware, it took a bit more effort than planned (some pains surrounding our use of MongoDB) but I’m incredibly happy with how things have ended up. As mentioned earlier we’ve purchased our own hardware, and have racked it with Peer 1 here in Toronto. We’ve installed a hypervisor, and are running different VMs for critical services: MySQL, Mongo, Web Production, Web Development, etc.
Our websites sit under /var/www, so Where’s it Up resides at /var/www/wheresitup.com/. Under that directory we have /noweb/apache/ which contains both wheresitup.com and dev.wheresitup.com, configuration files for apache. The entire /var/www/wheresitup.com directory tree resides nicely in our version control system. We hand off key configuration options to our websites through the use of Apache’s SetEnv, things like SetEnv mysql_host dev.mysql, these apache configuration options represent the only difference between the two code bases.
I’ve written or maintained code that implied the state (Dev/Production/Stage) based on the Host, directory, or other factors in the past. I much prefer grabbing an explicit constant. It feels cleaner, I don’t have to read up on which variables could have been manipulated by an attacker, and I can ask the exact question I want answered: Is this dev, rather than “is the url the one that means this is dev”.
This allows us to match our Development and Production virtual machines very closely, the only difference between the two is which apache configuration file is sym-linked under /etc/apache2/conf/sites-enabled. Clearly WebDev links to the dev.wheresitup.com file, and WebProd links to wheresitup.com. We actually cloned one machine to produce the other.
Keeping the configuration files so close also makes a lot of sense to me. If I’m adding a new constant on Dev, the immediate presence of Prod reminds me that I’ll need to add it there as well. Storing the entire site: PHP code, supporting apache configuration, etc, all in once place makes it easy to avoid forgetting anything (which is easy when it's a different file on a different server). The only exception is SSL certificates. We currently host a number of our projects with GitHub, and trust them as we might, we’re not willing to hand those to anyone else.
Community News: Packagist Latest Releases for 05.15.2013
- loic-sharma/profiler (v1.1.0)
A PHP 5.3 profiler based off of Laravel 3's Anbu.
- phery/phery (2.5.2, 2.5.1)
XAJAX alternative, phery.js is a library in PHP that maps to all jQuery functions, DOM manipulation, meta arguments and serialization, seamless ajax integration, RESTful emulation, form submission and partial rendering views, plus its PSR-0 compatible
- phundament/p3pages (0.11.5, 0.11.4, 0.11.3)
Page Manager
- jbboehr/zsql (0.1.0)
SQL generator loosely based on Zend_Db_Select
- geoip2/geoip2 (v0.1.1)
MaxMind GeoIP2 PHP API
- components/handlebars.js (1.0.0-rc.4)
Handlebars.js and Mustache are both logicless templating languages that keep the view and the code separated like we all know they should be.
- precore/precore (1.0.1, 1.0.0)
Common classes and utilities
- tecnick.com/tcpdf (6.0.015)
TCPDF is a PHP class for generating PDF documents.
- nixilla/carweb-api-consumer (0.1)
CarweB API consumer in PHP
- phundament/app (0.20.2)
Yii Application Boilerplate, with packages from composer repository http://packages.phundament.com
- rampage-php/framework (1.0.0-alpha6)
Rampage PHP Framework based on Zend Framework 2
- fritz-payment/jsonrpc (0.1.0-RC1)
A general JSON RPC implementation
- thadafinser/zfc-datagrid (0.2.0)
Zend Framework 2 Module that provides a datagrid for different datasources and output formats
- bit3/contao-nested-menu (1.0.2)
Nested menus for Contao OpenSource CMS
- zweifisch/zf (v0.2.5)
a micro php web/cli framework/router
- hobnob/xml-stream-reader (1.0.1)
PHP SAX XML Stream Reader
- fightbulc/jsonrpc_curl (0.5.4)
JSON-RPC CURL
- graze/event (0.1.4)
Simple event pub-sub
- torohill/php-template (1.0.0)
A very basic template class that uses PHP as the templating language.
- ruudk/postmark-bundle (0.1.3)
This bundle lets you send messages via Postmark. It can offload the sending of messages to a Resque worker for speed and reliability.
- rah/danpu (2.3.2, 1.3.2, 2.3.1)
MySQL database dump and restoration tool implemented in PHP
- gridonic/prince-service-provider (1.0.0)
A PrinceXML ServiceProvider for Silex.
- gridonic/princexml-php (1.1.0)
PrinceXML PHP5 wrapper converted to follow the PSR-0 standard.
- certatim/zf2-ses-transport (0.3.2-alpha, 0.3.1-alpha)
ZF2 Module for adding an SeS bases Transport class
- dflydev/canal (v1.0.0)
Content analysis for the purpose of determining Internet media types.
