Deprecated: Assigning the return value of new by reference is deprecated in /var/www/l3s6524/html/datensarg/wordpress/wp-settings.php on line 512 Deprecated: Assigning the return value of new by reference is deprecated in /var/www/l3s6524/html/datensarg/wordpress/wp-settings.php on line 527 Deprecated: Assigning the return value of new by reference is deprecated in /var/www/l3s6524/html/datensarg/wordpress/wp-settings.php on line 534 Deprecated: Assigning the return value of new by reference is deprecated in /var/www/l3s6524/html/datensarg/wordpress/wp-settings.php on line 570 Deprecated: Assigning the return value of new by reference is deprecated in /var/www/l3s6524/html/datensarg/wordpress/wp-includes/cache.php on line 103 Deprecated: Assigning the return value of new by reference is deprecated in /var/www/l3s6524/html/datensarg/wordpress/wp-includes/query.php on line 61 Deprecated: Assigning the return value of new by reference is deprecated in /var/www/l3s6524/html/datensarg/wordpress/wp-includes/theme.php on line 1109 Datensarg » 2008 » March

Archive for March, 2008

Debugging on local Apache with PhpED

Saturday, March 29th, 2008
Deprecated: Function split() is deprecated in /var/www/l3s6524/html/datensarg/wordpress/wp-content/plugins/google-analytics-for-wordpress/gapp/googleanalytics.php on line 391 Deprecated: Function split() is deprecated in /var/www/l3s6524/html/datensarg/wordpress/wp-content/plugins/google-analytics-for-wordpress/gapp/googleanalytics.php on line 391 Deprecated: Function split() is deprecated in /var/www/l3s6524/html/datensarg/wordpress/wp-content/plugins/google-analytics-for-wordpress/gapp/googleanalytics.php on line 391 Deprecated: Function split() is deprecated in /var/www/l3s6524/html/datensarg/wordpress/wp-content/plugins/google-analytics-for-wordpress/gapp/googleanalytics.php on line 391

I’ve been working with PhpED for quite some time, but now that I’m using the Zend Framework I reached the point, where the integrated server isn’t good enough anymore. The main concern was mod_rewrite. I needed a way to debug on my local Apache installation (XAMPP to be specific).

I fought my way through multiple blogs and forums to get it all up and running. Here are my condensed facts for Apache and PhpED on Windows XP. This might be a little bit too detailed. If you think “Man, I really want to debug on my local Apache” you’ll probably know how to add extensions to your PHP environment, but I’ll tell you anyway:

Getting the debugger extension

PhpED comes with a variety of debugger extensions. They can be found in a subdirectory of your PhpED installation. For me that’s

c:\Program Files\phped\debugger\server\Win32\x86

Here we have extensions for different versions of PHP. I chose

php_dbg.dll-5.2.x

Where to put the extension now?

Make yourself a quick and dirty phpinfo.php file and put it in your project root.

<?php
   phpinfo();
?>

Open your project in your browser (Time for me to recommend a vhost once more). It’s really important that you don’t start that file from PhpED since it’ll use it’s own PHP environment and that’s exactly what we want to avoid. Now look for the extension_dir entry in the Configuration > PHP Core section. It should say something like

C:\xampp\php\ext\

Now get your php_dbg.dll-5.2.x and put it into your extension_dir. Trim the version information. What’s left will be

php_dbg.dll

Telling PHP what to do

Go back to your browser and go to the top of your phpinfo page. Look for the php.ini in use (Loaded Configuration File) and open it in the editor of your choice (I guess it’ll be PhpED, right?). Scroll down (or search for) the section named Dynamic Extensions. Add a new line:

extension=php_dbg.dll

Next we’ll configure the debugger. At the end of your php.ini add the following:

[debugger]
debugger.enabled=on
debugger.profiler_enabled=on
debugger.hosts_allow=ALL
;debugger.hosts_deny=ALL
debugger.ports=7869, 10000/16

This might be a little bit risky. I don’t have to share my development environment with other people and my system isn’t reachable from the outside world. You might want to have a closer look at debugger.hosts_allow. If you want to play it safe, uncomment the debugger.hosts_deny entry to block everyone, then add your allowed hosts to debugger.hosts_allow.

Restart your Apache. Go back to your browser and hit refresh. Next to the Zend Engine 2 logo you should see something like “with DBG v3.1.11, (C) 2000,2007, by Dmitri Dmitrienko”. If you see it: You’re almost done. If you don’t see it: You probably changed the wrong php.ini.

Setting up your project in PhpED

Open PhpED and go to your project properties. In the Mapping section change Run mode to HTTP Mode (3rd party WEB server) and let the Root URL point to your project server.

Basically that’s it!

Troubleshooting

I had some problems when debugging the first times. Apache crashed with an Windows exception once the page started loading. Try the following: Go back to your php.ini and search for [Zend]. If you don’t know, if you need these settings, then you probably won’t. Try to go without them by commenting them.

[Zend]
;zend_extension_ts = "C:\xampp\php\zendOptimizer\lib\ZendExtensionManager.dll"
;zend_extension_manager.optimizer_ts = "C:\xampp\php\zendOptimizer\lib\Optimizer"
;zend_optimizer.enable_loader = 0
;zend_optimizer.optimization_level=15
;zend_optimizer.license_path =
; Local Variables:
; tab-width: 4
; End:

Restart your Apache after you’re done!

Sources

NuSphere support forum
Darren Beals blog
PHPEclipse forum

Zend Tutorial

Monday, March 24th, 2008
Deprecated: Function split() is deprecated in /var/www/l3s6524/html/datensarg/wordpress/wp-content/plugins/google-analytics-for-wordpress/gapp/googleanalytics.php on line 391 Deprecated: Function split() is deprecated in /var/www/l3s6524/html/datensarg/wordpress/wp-content/plugins/google-analytics-for-wordpress/gapp/googleanalytics.php on line 391

I’ve been trying to set up my directories on the production server yesterday. Meanwhile I came across Rob Allen’s Blog. It features a nice tutorial including database access and forms. Rob doesn’t waste time doing it the “easy” way, like the Zend framework quick start tutorial does. You get your full load of class inheritance right away. Another useful link is the Zend framework multimedia section, especially the screencasts by Mitchell Hashimoto.

To bad I had to realize, that the framework wasn’t able to load a file named ReflectionClass.php. Even worse: After doing some reflection myself I figured out, that it wasn’t a framework issue: ReflectionClass was meant to be the actual PHP class, but since my provider has the reflection API disabled, the framework tried to instantiate it, failed and tried to find a file of that name instead. I really hope, they’ll fix that soon. (I know they will)

So instead I had to overhaul my XAMPP, which was quite easy, once I figured out how to do it. Well, here are my hints to get the Zend framework running on your raw XAMPP installation:

  • Be sure to activate mod_rewrite in your conf/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so
  • You might want to create a virtual host for your project in conf/extra/httpd.vhosts.conf pointing towards the public directory of your project
<VirtualHost *:80>
    ServerAdmin aaa@bbb.de
    DocumentRoot c:\htdocs\myproject\public
    ServerName myproject.localhost
</VirtualHost>
  • If you do so, you should edit your hosts.txt (wherever it may be on your OS)

Have fun working it out!

Frameworks

Saturday, March 22nd, 2008
Deprecated: Function split() is deprecated in /var/www/l3s6524/html/datensarg/wordpress/wp-content/plugins/google-analytics-for-wordpress/gapp/googleanalytics.php on line 391 Deprecated: Function split() is deprecated in /var/www/l3s6524/html/datensarg/wordpress/wp-content/plugins/google-analytics-for-wordpress/gapp/googleanalytics.php on line 391

After trying to rewrite my code using design patterns till 4:20 a.m. I thought, that someone already might have built a working collection of classes to do the same thing. It’s important to understand how design patterns work and why and where they can help you simplifying things, but hey: I wan’t to build a scalable web application and I don’t really want to spend my free time building my own framework.

I’ve been flipping through Duane O’Brien’s article on PHP frameworks for a while now and decided to give the Zend Framework a try.