<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Alan Seiden&#039;s PHP and Technology &#187; Web development</title>
	<atom:link href="http://www.alanseiden.com/category/web-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.alanseiden.com</link>
	<description>PHP, IBM i, Zend Framework</description>
	<lastBuildDate>Mon, 23 Jan 2012 04:04:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>PHP performance tip: disable unused extensions with Zend Server</title>
		<link>http://www.alanseiden.com/2011/08/08/php-performance-tip-disable-unused-extensions-with-zend-server/</link>
		<comments>http://www.alanseiden.com/2011/08/08/php-performance-tip-disable-unused-extensions-with-zend-server/#comments</comments>
		<pubDate>Mon, 08 Aug 2011 05:16:13 +0000</pubDate>
		<dc:creator>Alan Seiden</dc:creator>
				<category><![CDATA[IBM i]]></category>
		<category><![CDATA[iSeries]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[System i]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[Zend Server]]></category>
		<category><![CDATA[IBMi PHP ZF webperf]]></category>

		<guid isPermaLink="false">http://www.alanseiden.com/?p=952</guid>
		<description><![CDATA[Whenever I&#8217;m brought in to improve the performance of a PHP application, an easy change I make is to disable any PHP extensions that the application does not use. PHP extensions are code libraries written in C that add to &#8230; <a href="http://www.alanseiden.com/2011/08/08/php-performance-tip-disable-unused-extensions-with-zend-server/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.alanseiden.com%2F2011%2F08%2F08%2Fphp-performance-tip-disable-unused-extensions-with-zend-server%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.alanseiden.com%2F2011%2F08%2F08%2Fphp-performance-tip-disable-unused-extensions-with-zend-server%2F&amp;source=alanseiden&amp;style=normal&amp;service=bit.ly&amp;service_api=R_b68ecedb61ce35db43868fbb04bf4dab&amp;hashtags=IBMi+PHP+ZF+webperf&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Whenever I&#8217;m brought in to improve the performance of a PHP application, an easy change I make is to disable any PHP extensions that the application does not use. PHP extensions are code libraries written in C that add to PHP&#8217;s native functionality. Examples of popular extensions on IBM i are <a href="http://www.php.net/manual/en/book.ibm-db2.php">ibm_db2</a> and <a href="http://www.php.net/manual/en/book.curl.php">curl</a>. </p>
<h3>Boost performance by disabling unneeded extensions</h3>
<p>I&#8217;ve noticed that Zend Server ships with most extensions enabled, presumably so that developers won&#8217;t have to see &#8220;extension not enabled&#8221; error messages. While the default configuration is fine as a starting point, developers should understand that each extension requires memory when loaded. When every bit of performance counts, it&#8217;s best to disable the unused extensions. Note: don&#8217;t disable anything till you read <a href="#keepenabled">Several Extensions to Keep Enabled</a>.</p>
<h3>Managing PHP extensions</h3>
<p>To manage extensions, Zend Server provides the &#8220;Server Setup / Extensions&#8221; tab. Each extension can be enabled or disabled with its &#8220;Turn on&#8221; or &#8220;Turn off&#8221; links. Changes do not take effect until the &#8220;Restart PHP&#8221; button is clicked.</p>
<div id="attachment_954" class="wp-caption alignleft" style="width: 1006px"><a href="http://www.alanseiden.com/wp-content/uploads/2011/08/Zend_Server_extensions_page.png"><img class="size-full wp-image-954 " title="Zend Server PHP extensions management page" src="http://www.alanseiden.com/wp-content/uploads/2011/08/Zend_Server_extensions_page.png" alt="Zend Server PHP extensions management page" width="996" height="676" /></a><p class="wp-caption-text">Zend Server&#39;s Extensions page where PHP extensions are managed</p></div>
<h3>Storage location for extension settings</h3>
<p>Zend Server stores extension settings in a set of .INI files, one file per extension. On IBM i, the files are located in /usr/local/ZendSvr/etc/conf.d. Before making large-scale changes, you may wish to back up this folder. Then, if you discover you were overzealous in disabling extensions, you can compare the contents of conf.d with your backup to find out where you went wrong.</p>
<h3><a name="keepenabled">Several extensions to keep enabled</a></h3>
<p>In addition to whatever extensions are required by a given application, I&#8217;ve found that several extensions are required by Zend Server itself. Do not disable these. So far, I&#8217;ve found that Zend Server requires these extensions to be enabled:</p>
<ul>
<li>ctype</li>
<li>iconv</li>
<li>pdo_mysql</li>
<li>zip</li>
</ul>
<p>If you accidentally disable an extension required by Zend Server, which you&#8217;ll discover when Zend Server fails to start properly, you must re-enable the extension in the correct .INI file and then restart Zend Server from a command line or menu. On IBM i, the command is STRTCPSVR SERVER(*<em>HTTP</em>) <em>RESTART</em>(*<em>HTTP</em>) HTTPSVR(<em>ZENDSVR</em>).</p>
<h3>More performance tips to come</h3>
<p>I plan to write about more techniques to improve PHP application performance, particularly on IBM i, that I&#8217;ve found to be effective in my consulting experience. Performance is a critical part of user experience that developers should not ignore. In addition to this practical need for good performance, I can speak for myself, at least, in saying I feel great satisfaction when I can take a slow application (sometimes the victim of an underpowered server) and, step by step, help it run faster and faster, till the performance is at least acceptable and sometimes quite fast. More to come.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alanseiden.com/2011/08/08/php-performance-tip-disable-unused-extensions-with-zend-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework webinar this Wednesday</title>
		<link>http://www.alanseiden.com/2011/03/04/zend-framework-webinar-this-wednesday/</link>
		<comments>http://www.alanseiden.com/2011/03/04/zend-framework-webinar-this-wednesday/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 19:14:39 +0000</pubDate>
		<dc:creator>Alan Seiden</dc:creator>
				<category><![CDATA[IBM i]]></category>
		<category><![CDATA[iSeries]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[System i]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Zend Server]]></category>
		<category><![CDATA[Zend Studio]]></category>
		<category><![CDATA[zf]]></category>

		<guid isPermaLink="false">http://www.alanseiden.com/?p=800</guid>
		<description><![CDATA[On March 9, 2011, I&#8217;ll present a free webinar about how to create a Zend Framework project on IBM i. The webinar is at 9am PST, 12pm EST. Sign up here: http://www.zend.com/en/company/news/event/790_webinar-your-first-zend-framework-project-on-ibm-i Here&#8217;s the complete list of my upcoming talks.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.alanseiden.com%2F2011%2F03%2F04%2Fzend-framework-webinar-this-wednesday%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.alanseiden.com%2F2011%2F03%2F04%2Fzend-framework-webinar-this-wednesday%2F&amp;source=alanseiden&amp;style=normal&amp;service=bit.ly&amp;service_api=R_b68ecedb61ce35db43868fbb04bf4dab&amp;hashtags=IBM+i,PHP,zf&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>On March 9, 2011, I&#8217;ll present a free webinar about how to create a Zend Framework project on IBM i. The webinar is at 9am PST, 12pm EST. Sign up here: <a title="Your first Zend Framework project on IBM i" href="http://www.zend.com/en/company/news/event/790_webinar-your-first-zend-framework-project-on-ibm-i">http://www.zend.com/en/company/news/event/790_webinar-your-first-zend-framework-project-on-ibm-i</a></p>
<p>Here&#8217;s the <a title="Upcoming Presentations and Talks" href="http://www.alanseiden.com/presentations/upcoming/">complete list of my upcoming talks</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alanseiden.com/2011/03/04/zend-framework-webinar-this-wednesday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maximize Zend Server PHP performance with Apache compression</title>
		<link>http://www.alanseiden.com/2010/08/13/maximize-zend-server-performance-with-apache-compression/</link>
		<comments>http://www.alanseiden.com/2010/08/13/maximize-zend-server-performance-with-apache-compression/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 20:45:52 +0000</pubDate>
		<dc:creator>Alan Seiden</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[IBM i]]></category>
		<category><![CDATA[iSeries]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[System i]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Zend Server]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[mod_deflate]]></category>
		<category><![CDATA[speed]]></category>

		<guid isPermaLink="false">http://www.alanseiden.com/?p=439</guid>
		<description><![CDATA[Faster web sites sell more products, create better user satisfaction, and even rank higher in Google searches. Try compression to boost the download speed of your Zend Server for IBM i pages. You can compress PHP output javascript, style sheets, and other text-based content. My tests show a speed improvement of 10-50%. <a href="http://www.alanseiden.com/2010/08/13/maximize-zend-server-performance-with-apache-compression/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.alanseiden.com%2F2010%2F08%2F13%2Fmaximize-zend-server-performance-with-apache-compression%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.alanseiden.com%2F2010%2F08%2F13%2Fmaximize-zend-server-performance-with-apache-compression%2F&amp;source=alanseiden&amp;style=normal&amp;service=bit.ly&amp;service_api=R_b68ecedb61ce35db43868fbb04bf4dab&amp;hashtags=compression,Firebug,gzip,mod_deflate,speed&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Does your site run as quickly as it could? It&#8217;s worth your time to find out. Faster web sites sell more products, improve user satisfaction, and even <a href="http://googlewebmastercentral.blogspot.com/2010/04/using-site-speed-in-web-search-ranking.html">rank higher in Google searches</a>.</p>
<p><em>Note: This tip was written for IBM i but could be adapted for other platforms as well.</em></p>
<p><strong>Benefits of Zend Server</strong></p>
<p>If you have upgraded from Zend Core to <a href="http://www.zend.com/products/server/zend-server-ibm-i">Zend Server for IBM i</a>, you have already received several  performance improvements: bytecode acceleration (Zend Optimizer+), the elimination of Zend Core&#8217;s proxy web server, and configurable Data Caching. If you upgraded from Community Edition (CE) to full Zend Server, you also get monitoring, Page Caching, and Job Queue functionality.</p>
<p><strong>Compression adds even more speed</strong></p>
<p>IBM&#8217;s Apache web server provides an additional way to speed up your Zend Server for IBM i pages. You can compress PHP output, javascript, style sheets, and other text-based content. The compressed output will automatically be decompressed and interpreted properly by all modern web browsers. My tests show a <strong>speed improvement of 10-50%</strong> from this easy technique.</p>
<p><strong>How to enable compression in 3 steps</strong></p>
<p>1. Edit ZENDSVR&#8217;s Apache configuration file, located at /www/zendsvr/conf/httpd.conf. This is a simple text file, so you may choose from several editors: IBM&#8217;s HTTP Server Admin GUI at port 2001 (if *ADMIN is started), the WRKLNK/EDTF command, or your favorite text editor (I use <a href="http://www.editpadpro.com/">EditPad Pro</a>).</p>
<p>2. Add the following two directives to the httpd.conf&#8217;s main section:</p>
<pre># Load IBM i's module that performs compression
LoadModule deflate_module /QSYS.LIB/QHTTPSVR.LIB/QZSRCORE.SRVPGM

# Specify what to compress (example: php, json, css, javascript, static html)
AddOutputFilterByType DEFLATE application/x-httpd-php application/json text/css
application/x-javascript application/javascript text/html</pre>
<p>3. Restart Zend Server using the handy <a href="http://www.alanseiden.com/wp-content/uploads/2010/08/Copy-of-Zend-Server-restart-button.png"><img class="alignnone size-full wp-image-507" title="Zend Server restart button" src="http://www.alanseiden.com/wp-content/uploads/2010/08/Copy-of-Zend-Server-restart-button.png" alt="Restart PHP button" width="122" height="20" /></a> button or <strong>STRTCPSVR SERVER(*HTTP) RESTART(*HTTP) HTTPSVR(ZENDSVR)</strong></p>
<p><strong>Measure the improvement</strong></p>
<p>I ran before-and-after tests using a sample script included with Zend Server for IBM i: http://your-server:10088/Samples/SQL_access/DB2_SQL_example.php.</p>
<p>Before compression: 31kb, loaded in 250ms (milliseconds). See the <a href="http://getfirebug.com">Firebug</a> report below (Firebug is an optional add-on for Firefox and is not required.)</p>
<div id="attachment_512" class="wp-caption alignnone" style="width: 659px"><a href="http://www.alanseiden.com/wp-content/uploads/2010/08/no-compression1.png"><img class="size-large wp-image-512     " title="no compression" src="http://www.alanseiden.com/wp-content/uploads/2010/08/no-compression1-1024x401.png" alt="Zend Server output without compression" width="649" height="254" /></a><p class="wp-caption-text">Without compression, this page was 31kb and loaded in 250ms</p></div>
<p>After compression: 4.4kb; loaded in 109ms. That&#8217;s only 14% of the size and 50% of the time! See the screen shot below.</p>
<div id="attachment_511" class="wp-caption alignnone" style="width: 651px"><a href="http://www.alanseiden.com/wp-content/uploads/2010/08/with-compression1.png"><img class="size-full wp-image-511 " title="with-compression" src="http://www.alanseiden.com/wp-content/uploads/2010/08/with-compression1.png" alt="after compression: only 4.4kb and loaded in 109ms" width="641" height="325" /></a><p class="wp-caption-text">after compression: only 4.4kb and loaded in 109ms</p></div>
<p>I highly recommend that you give output compression a try. Your Zend Server for IBM i pages will fly!</p>
<p>For more information on browser output compression, see: <a href="http://httpd.apache.org/docs/2.0/mod/mod_deflate.html" target="_blank">http://httpd.apache.org/docs/2.0/mod/mod_deflate.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.alanseiden.com/2010/08/13/maximize-zend-server-performance-with-apache-compression/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>A simple security measure</title>
		<link>http://www.alanseiden.com/2010/07/07/a-simple-security-measure/</link>
		<comments>http://www.alanseiden.com/2010/07/07/a-simple-security-measure/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 13:33:39 +0000</pubDate>
		<dc:creator>Alan Seiden</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web development]]></category>

		<guid isPermaLink="false">http://www.alanseiden.com/?p=411</guid>
		<description><![CDATA[A reader recently asked me this security question: If a user enters: http://&#60;my_ip&#62;/&#60;mydirectory&#62; instead of http://&#60;my_ip&#62;/&#60;mydirectory&#62;/script.php They get a listing of all scripts/files in that directory and they can then select and execute/run those scripts. This is a real concern &#8230; <a href="http://www.alanseiden.com/2010/07/07/a-simple-security-measure/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.alanseiden.com%2F2010%2F07%2F07%2Fa-simple-security-measure%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.alanseiden.com%2F2010%2F07%2F07%2Fa-simple-security-measure%2F&amp;source=alanseiden&amp;style=normal&amp;service=bit.ly&amp;service_api=R_b68ecedb61ce35db43868fbb04bf4dab&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>A reader recently asked me this security question:</p>
<blockquote><p>If a user enters:</p>
<p>http://&lt;my_ip&gt;/&lt;mydirectory&gt;</p>
<p>instead of</p>
<p>http://&lt;my_ip&gt;/&lt;mydirectory&gt;/script.php</p>
<p>They get a listing of all scripts/files in that directory and they can then select and execute/run those scripts.</p>
<p>This is a real concern for us, any suggestions?</p></blockquote>
<p>The solution is to turn off directory browsing in your Apache configuration. To do this, make sure your Apache configuration file (probably httpd.conf or .htaccess) includes this directive:</p>
<p><strong>Options -Indexes</strong></p>
<p>Note that this directive merely prevents people from discovering the names of your files. Users who already know your file names can still access them. But <strong>Options -Indexes</strong> provides an important layer of security, preventing mischief from casual users who might otherwise stumble onto your file names by accident or design.</p>
<p>More information: <a title="Documentation for Apache's Options directive" href="http://httpd.apache.org/docs/2.2/mod/core.html#options">http://httpd.apache.org/docs/2.2/mod/core.html#options</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.alanseiden.com/2010/07/07/a-simple-security-measure/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Differences Between Zend Core and Zend Server on IBM i</title>
		<link>http://www.alanseiden.com/2010/04/21/differences-between-zend-core-and-zend-server-on-ibm-i/</link>
		<comments>http://www.alanseiden.com/2010/04/21/differences-between-zend-core-and-zend-server-on-ibm-i/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 11:30:03 +0000</pubDate>
		<dc:creator>Alan Seiden</dc:creator>
				<category><![CDATA[IBM i]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[System i]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[Zend Server]]></category>

		<guid isPermaLink="false">http://www.alanseiden.com/?p=390</guid>
		<description><![CDATA[Zend Server for IBM i improves upon Zend Core&#8217;s older implementation of PHP in numerous ways. To make the migration easier, I&#8217;ve created a table that shows some of the settings and default file locations that have changed between Zend &#8230; <a href="http://www.alanseiden.com/2010/04/21/differences-between-zend-core-and-zend-server-on-ibm-i/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.alanseiden.com%2F2010%2F04%2F21%2Fdifferences-between-zend-core-and-zend-server-on-ibm-i%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.alanseiden.com%2F2010%2F04%2F21%2Fdifferences-between-zend-core-and-zend-server-on-ibm-i%2F&amp;source=alanseiden&amp;style=normal&amp;service=bit.ly&amp;service_api=R_b68ecedb61ce35db43868fbb04bf4dab&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Zend Server for IBM i improves upon Zend Core&#8217;s older implementation of PHP in numerous ways. To make the migration easier, I&#8217;ve created a table that shows some of the settings and default file locations that have changed between Zend Core and Zend Server.</p>
<p><!--[if !mso]> <mce:style><!  v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} p\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} v\:textbox {display:none;} --> <!--[endif]--><!--[if !ppt]--><!-- .O 	{color:#333300; 	font-size:149%;} .O1 	{color:#333300; 	font-size:149%;} a:link 	{color:#999933 !important;} a:active 	{color:#CCCC00 !important;} a:visited 	{color:#666633 !important;} --><!-- .sld 	{left:0px !important; 	width:6.0in !important; 	height:4.5in !important; 	font-size:103% !important;} --><!--[endif]--></p>
<table style="height: 313px;" dir="ltr" cellspacing="0" cellpadding="0" width="557">
<tbody>
<tr>
<td width="186" height="32" bgcolor="#969696"></td>
<td width="186" height="32" bgcolor="#969696">
<div><strong>Zend Core</strong></div>
</td>
<td width="167" height="32" bgcolor="#969696">
<div><strong>Zend Server</strong></div>
</td>
</tr>
<tr>
<td width="186" height="31">
<div><strong>Installation folder</strong></div>
</td>
<td width="186" height="31">
<div>/usr/local/zend/core</div>
</td>
<td width="167" height="31">
<div>/usr/local/zendsvr</div>
</td>
</tr>
<tr>
<td width="186" height="29">
<div><strong>PHP.INI</strong></div>
</td>
<td width="186" height="29">
<div>/usr/local/zend/core/etc</div>
</td>
<td width="167" height="29">
<div>/usr/local/zendsvr/etc</div>
</td>
</tr>
<tr>
<td width="186" height="50">
<div><strong>Web server root(s)</strong></div>
</td>
<td width="186" height="50">
<div>/www/zendcore,<br />
/usr/local/zend/apache2</div>
</td>
<td width="167" height="50">
<div>/www/zendsvr</div>
</td>
</tr>
<tr>
<td width="186" height="50">
<div><strong>Document root</strong></div>
</td>
<td width="186" height="50">
<div>/www/zendcore/htdocs</div>
</td>
<td width="167" height="50">
<div>/www/zendsvr/htdocs</div>
</td>
</tr>
<tr>
<td width="186" height="50">
<div><strong>Zend Framework</strong></div>
</td>
<td width="186" height="50">
<div>/usr/local/Zend/ZendFramework</div>
</td>
<td width="167" height="50">
<div>/usr/local/zendsvr/share/ZendFramework</div>
</td>
</tr>
<tr>
<td width="186" height="50">
<div><strong>PHP binaries folder *<br />
</strong><strong>* where php and php-cli reside </strong></div>
</td>
<td width="186" height="50">
<div>/usr/local/zend/core/bin</div>
</td>
<td width="167" height="50">
<div>/usr/local/zendsvr/bin</div>
</td>
</tr>
<tr>
<td width="186" height="50">
<div><strong>PHP Log files</strong></div>
</td>
<td width="186" height="50">
<div>/usr/local/zend/core/logs</div>
</td>
<td width="167" height="50">
<div>/usr/local/zendsvr/<br />
var/log</div>
</td>
</tr>
<tr>
<td width="186" height="50">
<div><strong>Web user profile </strong><strong>(assign authority to it)</strong></div>
</td>
<td width="186" height="50">
<div>NOBODY</div>
</td>
<td width="167" height="50">
<div>QTMHHTTP</div>
</td>
</tr>
<tr>
<td width="186" height="27">
<div><strong>Default HTTP Port</strong></div>
</td>
<td width="186" height="27">
<div>:89</div>
</td>
<td width="167" height="27">
<div>:10088</div>
</td>
</tr>
<tr>
<td width="186" height="27">
<div><strong>Admin Interface URL</strong></div>
</td>
<td width="186" height="27">
<div>http://yourIBMi:89/ZendCore/</div>
</td>
<td width="167" height="27">
<div>http://yourIBMi:10088/ZendServer/</div>
</td>
</tr>
<tr>
<td width="186" height="27">
<div><strong>Menu (5250)</strong></div>
</td>
<td width="220" height="27">
<div>GO ZENDCORE/ZCMENU</div>
</td>
<td width="195" height="27">
<div>GO ZENDSVR/ZSMENU</div>
</td>
</tr>
</tbody>
</table>
<p>If the new HTTP port of 10088 seems hard to remember, you can change it to something that&#8217;s easier to work with, such as the standard HTTP port of 80. To do that, edit <strong>/www/zendsvr/conf/httpd.conf </strong>and change <strong>Listen *:10088</strong> to <strong>Listen *:80</strong> or whatever you want. (Of course, first ensure that no other service is running on that IP/Port combination.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alanseiden.com/2010/04/21/differences-between-zend-core-and-zend-server-on-ibm-i/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Zend Server for IBM i Is Here</title>
		<link>http://www.alanseiden.com/2010/04/21/zend-server-for-ibm-i-is-here/</link>
		<comments>http://www.alanseiden.com/2010/04/21/zend-server-for-ibm-i-is-here/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 11:22:16 +0000</pubDate>
		<dc:creator>Alan Seiden</dc:creator>
				<category><![CDATA[IBM i]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[System i]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[Zend Server]]></category>

		<guid isPermaLink="false">http://www.alanseiden.com/?p=388</guid>
		<description><![CDATA[Zend and IBM have announced an updated, streamlined version of their PHP package for IBM i, called Zend Server. I&#8217;ve been using the beta for a while but last week read an announcement showing it&#8217;s ready for general use. It &#8230; <a href="http://www.alanseiden.com/2010/04/21/zend-server-for-ibm-i-is-here/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.alanseiden.com%2F2010%2F04%2F21%2Fzend-server-for-ibm-i-is-here%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.alanseiden.com%2F2010%2F04%2F21%2Fzend-server-for-ibm-i-is-here%2F&amp;source=alanseiden&amp;style=normal&amp;service=bit.ly&amp;service_api=R_b68ecedb61ce35db43868fbb04bf4dab&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Zend and IBM have announced an updated, streamlined version of their PHP package for IBM i, called Zend Server. I&#8217;ve been using the beta for a while but last week <a title="Zend Server for i/OS Now Available" href="http://www.itjungle.com/fhs/fhs041310-story02.html">read an announcement</a> showing it&#8217;s ready for general use. It combines the best of Zend Core and Zend Platform in one package.</p>
<p>To get Zend Server, go to the <a title="Zend Server for IBM i" href="http://www.zend.com/en/products/server/zend-server-ibm-i">Zend Server for IBM i</a> page and click the green &#8220;Free Download&#8221; button. This will give you the &#8220;Community Edition (CE)&#8221; version, the free version that handles all the basics for running PHP on IBM i. It even comes with a year of free online support.</p>
<p>If you want to  upgrade to the non-CE version (it doesn&#8217;t have its own name), which gives you more debugging and tracing tools, as well as Job Queue functionality and more support, you can buy a license. <a title="write to me about Zend Server" href="http://www.alanseiden.com/contact">Write to me</a> if you need help or want to buy a license for the non-CE version.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alanseiden.com/2010/04/21/zend-server-for-ibm-i-is-here/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Class &#8216;Zend_Db_Table&#8217; not found</title>
		<link>http://www.alanseiden.com/2010/03/04/class-zend_db_table-not-found/</link>
		<comments>http://www.alanseiden.com/2010/03/04/class-zend_db_table-not-found/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 21:08:44 +0000</pubDate>
		<dc:creator>Alan Seiden</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.alanseiden.com/?p=370</guid>
		<description><![CDATA[New developers sometimes struggle with putting all of Zend Framework&#8217;s pieces together. This week someone asked me how to resolve the error: Fatal error: Class &#8216;Zend_Db_Table&#8217; not found. The answer: he needs to &#8220;require&#8221; the file containing the Zend_Db_Table class, &#8230; <a href="http://www.alanseiden.com/2010/03/04/class-zend_db_table-not-found/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.alanseiden.com%2F2010%2F03%2F04%2Fclass-zend_db_table-not-found%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.alanseiden.com%2F2010%2F03%2F04%2Fclass-zend_db_table-not-found%2F&amp;source=alanseiden&amp;style=normal&amp;service=bit.ly&amp;service_api=R_b68ecedb61ce35db43868fbb04bf4dab&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>New developers sometimes struggle with putting all of Zend Framework&#8217;s pieces together. This week someone asked me how to resolve the error:</p>
<blockquote><p><span style="font-size: small;"><strong>Fatal error</strong>: Class &#8216;Zend_Db_Table&#8217; not found. </span></p></blockquote>
<p><span style="font-size: small;">The answer: he needs to &#8220;require&#8221; the file containing the Zend_Db_Table class, like so:</span></p>
<pre>require_once 'Zend/Db/Table.php';</pre>
<p>or (my preference) use the autoloader:</p>
<pre>// ZF 1.8 or later: add these lines to your bootstrap file:
require_once 'Zend/Loader/Autoloader.php';
$loader = Zend_Loader_Autoloader::getInstance()-&gt;setFallbackAutoloader(true);</pre>
<p>ZF isn&#8217;t complicated if you know the few things you MUST use. The autoloader is one of them.</p>
<p>If you need help getting started with Zend Framework, <a title="contact me about Zend Framework mentoring, training, or troubleshooting" href="http://www.alanseiden.com/contact">contact me about Zend Framework mentoring, training, or troubleshooting</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alanseiden.com/2010/03/04/class-zend_db_table-not-found/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Our Zend Framework-based Site Honored by IBM/COMMON</title>
		<link>http://www.alanseiden.com/2009/05/21/our-zend-framework-based-site-honored-by-ibmcommon/</link>
		<comments>http://www.alanseiden.com/2009/05/21/our-zend-framework-based-site-honored-by-ibmcommon/#comments</comments>
		<pubDate>Thu, 21 May 2009 04:15:21 +0000</pubDate>
		<dc:creator>Alan Seiden</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[IBM i]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.alanseiden.com/2009/05/21/our-zend-framework-based-site-honored-by-ibmcommon/</guid>
		<description><![CDATA[We won! IBM has recognized my use of PHP and Zend Framework, and our entire team&#8217;s RPG/DB2 and design work, by naming our web solution the IBM i&#8217;s most innovative of 2009. At IBM&#8217;s 2009 COMMON conference, IBM awarded the &#8230; <a href="http://www.alanseiden.com/2009/05/21/our-zend-framework-based-site-honored-by-ibmcommon/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.alanseiden.com%2F2009%2F05%2F21%2Four-zend-framework-based-site-honored-by-ibmcommon%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.alanseiden.com%2F2009%2F05%2F21%2Four-zend-framework-based-site-honored-by-ibmcommon%2F&amp;source=alanseiden&amp;style=normal&amp;service=bit.ly&amp;service_api=R_b68ecedb61ce35db43868fbb04bf4dab&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>We won! IBM has recognized my use of PHP and Zend Framework, and our entire team&#8217;s RPG/DB2 and design work, by naming our web solution the IBM i&#8217;s most innovative of 2009.</p>
<p>At IBM&#8217;s 2009 COMMON conference, IBM awarded the <a title="Power Systems Innovation Award" href="https://www.mcpressonline.com/cio-news/standards-organizations/common-and-ibm-recognize-innovative-use-of-power-systems-flexibility.html">Power Systems Innovation Award for Best Web Solution</a> for eBiz@ABG. The site, developed with my colleagues at  Strategic Business Systems, Inc., was created for New Jersey&#8217;s largest wine and spirits wholesaler, Allied Beverage Group.</p>
<p>The system offers product ordering, live inventory levels and pricing, and a full-text search of Allied&#8217;s large product catalog. The application was built with Zend Framework (the leading PHP framework) and runs entirely on Allied&#8217;s IBM i, leveraging Allied&#8217;s db2 database and time-tested RPG logic.</p>
<p>The site is password-protected, so unfortunately I can&#8217;t link to it here.</p>
<p>eBiz@ABG is one of the first sites to be built with Zend Framework on IBM i (System i, i5, iSeries, AS/400). It was a true collaboration with Allied, made easier because we all spoke the language of &#8220;i.&#8221; What&#8217;s more, by using large chunks of Allied&#8217;s existing RPG code that already handled the complex business logic, we saved time and avoided reinventing the wheel.</p>
<p>Zend Framework worked so well that I committed to mastering it and teaching the community about it. (ZF has a learning curve, but after that curve is mastered, ZF speeds development and offers easy maintenance and growth.) I earned my Zend Framework certification in August 2008, becoming one of the first 50 worldwide to do so and the first ZF-certified &#8220;i&#8221; professional. Since then, I&#8217;ve gone on to be a ZF/i mentor for other development teams, and have become a public speaker, sharing my PHP/ZF/i roadmap at conferences.</p>
<p>Thanks to Allied for the opportunity to collaborate on a great project; thanks to Strategic Business Systems for the support; and thanks to IBM for the award.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alanseiden.com/2009/05/21/our-zend-framework-based-site-honored-by-ibmcommon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Use a PHP Framework?</title>
		<link>http://www.alanseiden.com/2008/06/25/why-use-php-frameworks/</link>
		<comments>http://www.alanseiden.com/2008/06/25/why-use-php-frameworks/#comments</comments>
		<pubDate>Wed, 25 Jun 2008 23:11:25 +0000</pubDate>
		<dc:creator>Alan Seiden</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web development]]></category>

		<guid isPermaLink="false">http://www.alanseiden.com/2008/06/25/why-use-php-frameworks/</guid>
		<description><![CDATA[At last night&#8217;s NY-PHP gathering, a fellow PHP&#8217;er and I discussed PHP frameworks. I told her I was developing an e-commerce site using Zend Framework. She replied that she&#8217;d been considering frameworks, especially Cake and Symfony, &#8220;but I&#8217;m not sure &#8230; <a href="http://www.alanseiden.com/2008/06/25/why-use-php-frameworks/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.alanseiden.com%2F2008%2F06%2F25%2Fwhy-use-php-frameworks%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.alanseiden.com%2F2008%2F06%2F25%2Fwhy-use-php-frameworks%2F&amp;source=alanseiden&amp;style=normal&amp;service=bit.ly&amp;service_api=R_b68ecedb61ce35db43868fbb04bf4dab&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>At last night&#8217;s <a title="New York PHP" href="http://www.nyphp.org">NY-PHP</a> gathering, a fellow PHP&#8217;er and I discussed PHP frameworks. I told her I was developing an e-commerce site using <a title="Zend Framework" href="http://framework.zend.com">Zend Framework</a>. She replied that she&#8217;d been considering frameworks, especially <a title="CakePHP" href="http://www.cakephp.org">Cake</a> and <a title="Symfony PHP framework" href="http://www.symfony-project.org">Symfony</a>, &#8220;but I&#8217;m not sure I need a framework at all. I write my own SQL; my apps work fine. What would a framework do for me?&#8221;</p>
<p>Setting aside the differences between PHP frameworks, I&#8217;m aware of at least 4 reasons to use them:</p>
<ol>
<li><strong>Modular design</strong>: A home-grown application, with its ad hoc growth, can become a tangled mess that&#8217;s hard to change or enhance. Most mainstream frameworks provide a modular design that makes it easier to modify or add components.</li>
<li><strong>Flexible components</strong>: Sure, you can write your own authorization class in PHP, but why reinvent the wheel? The framework will provide an integrated component that handles not only your current needs, but requirements that you haven&#8217;t yet encountered (but that the framework&#8217;s community has). With a framework, chances are that you won&#8217;t have to redesign your authorization system when the users ask for something new.</li>
<li><strong>Best practices</strong>: As you use the framework, you&#8217;ll begin to absorb the practices and (we hope) good habits of the framework&#8217;s creators.</li>
<li><strong>New capabilities</strong>: Frameworks regularly add functionality to help developers implement new technology. These days, common enhancements involve AJAX and connections to the APIs of popular web service providers.  </li>
</ol>
<p>Developers may understandably wonder if mastering a framework is worth the learning curve. In my opinion, the effort to learn a framework will be repaid with applications that are well structured, flexible, and easily maintained.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alanseiden.com/2008/06/25/why-use-php-frameworks/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Brand your site with a favicon</title>
		<link>http://www.alanseiden.com/2007/05/25/brand-your-site-with-a-favicon/</link>
		<comments>http://www.alanseiden.com/2007/05/25/brand-your-site-with-a-favicon/#comments</comments>
		<pubDate>Fri, 25 May 2007 06:09:24 +0000</pubDate>
		<dc:creator>Alan Seiden</dc:creator>
				<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web development]]></category>

		<guid isPermaLink="false">http://www.alanseiden.com/2007/05/25/brand-your-site-with-a-favicon/</guid>
		<description><![CDATA[Favicons are those eye-catching little pictures that appear in your web browser&#8217;s address bar, favorites list (hence the name favicon, short for &#8220;favorites icon&#8221;), and, with modern tabbed browsers, on tabs. Instantly recognizable when designed well, favicons represent the brand &#8230; <a href="http://www.alanseiden.com/2007/05/25/brand-your-site-with-a-favicon/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.alanseiden.com%2F2007%2F05%2F25%2Fbrand-your-site-with-a-favicon%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.alanseiden.com%2F2007%2F05%2F25%2Fbrand-your-site-with-a-favicon%2F&amp;source=alanseiden&amp;style=normal&amp;service=bit.ly&amp;service_api=R_b68ecedb61ce35db43868fbb04bf4dab&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Favicons are those eye-catching little pictures that appear in your web browser&#8217;s address bar, favorites list (hence the name favicon, short for &#8220;favorites icon&#8221;), and, with modern tabbed browsers, on tabs.</p>
<p>Instantly recognizable when designed well, favicons represent the brand identity of sites that use them.</p>
<p><BR><strong>Examples</strong></p>
<p>Wikipedia uses the &#8220;W&#8221; from its logo:<br />
<img src='http://www.alanseiden.com/wp-content/uploads/2007/05/wikipediafavicon.JPG' alt='Wikipediaâ€™s favicon' /></p>
<p>Digg&#8217;s favicon represents a person holding a shovel, an image that seems to have been created especially for the favicon:<br />
<img src='http://www.alanseiden.com/wp-content/uploads/2007/05/diggfavicon.JPG' alt='Diggâ€™s favicon' /></p>
<p><BR><strong>Usability in a tabbed, multitasking world</strong></p>
<p>Tabbed browsers, such as Firefox and Internet Explorer 7, can show many page-tabs at once, squishing a site&#8217;s descriptive text.<br />
Below are examples of tabs without favicons. What sites are they? I don&#8217;t know.<br />
<img src='http://www.alanseiden.com/wp-content/uploads/2007/05/nofavicon.JPG' alt='FireFox tabs without favicons' /></p>
<p>These have favicons. At a glance I see a seated robed figure (meditation site), a stylized &#8220;Ti&#8221; that I recognize as my private TikiWiki site, and a picture of me, which (if I can stop admiring its beauty for a moment), I know represents my blog.<br />
<img src='http://www.alanseiden.com/wp-content/uploads/2007/05/withfavicon.JPG' alt='FireFox tabs with favicons' /></p>
<p><BR><strong>Create your own mini work of art</strong></p>
<p>Favicons are ordinary graphics, generally 16&#215;16 pixels in size, named favicon.ico. How to make them? I found an easy method that even non-artists can use. </p>
<p>The free site <a href="http://www.html-kit.com/favicon/" target="_blank">FavIcon from Pics</a> allows anyone to convert a normal-sized graphic into a favicon. Instructions:</p>
<ol>
<li>Go to <a href="http://www.html-kit.com/favicon/" target="_blank">FavIcon from Pics</a>.
<li>Click the &#8220;Browse&#8230;&#8221; button to select an image from your computer&#8217;s hard drive.
<li>Click &#8220;Generate FavIcon.ico.&#8221;
<li>After a few seconds, the site will show a preview image and a download link.
<li>If you are pleased with your creation, download favicon.ico to your computer. Then transfer that file, via FTP or your preferred method, to your website&#8217;s root folder (often /public_html or /www).
<li>View your website with its new addition! (You might have to press the refresh button to make the favicon appear.)
</ol>
<p><BR><strong>Show your art</strong></p>
<p>If this article inspired you to create a favicon, please add a comment here with the link to your newly enhanced site.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alanseiden.com/2007/05/25/brand-your-site-with-a-favicon/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  www.alanseiden.com/category/web-development/feed/ ) in 0.33111 seconds, on Feb 5th, 2012 at 2:35 am UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 5th, 2012 at 3:35 am UTC -->
