Categories
linux PHP ubuntu xdebug zend server

Setting up Xdebug with Zend Server on Linux

Since our team work on different operating system, we switched for custom apache/php/mysql installs to Zend Server. Before everyone was using something different (the guys on windows were using XAMP, WAMP, on ubuntu i was using the packages in the repo and on the server we’re using apache from cPanel) and applications were behaving a differently according to the default settings for all those platforms.

So we decided to install Zend Server CE as it has more or less the same settings over different platforms. I’ve had some bad experiences installing ZSCE on a system that already had apache installed via apt, but after a clear install of Karmic, ZF was running like a charm. The install process described in the online documentation works great.

After install is done, make sure to symlink php, pecl, pear and phpize so you can access them system wide:

sudo ln -s /usr/local/zend/bin/zendctl.sh /usr/sbin/zendctl
sudo ln -s /usr/local/zend/bin/pear /usr/sbin/pear
sudo ln -s /usr/local/zend/bin/pecl /usr/sbin/pecl
sudo ln -s /usr/local/zend/bin/php /usr/sbin/php
sudo ln -s /usr/local/zend/bin/phpize /usr/sbin/phpize

At this point you should be able to run php -i in terminal and the phpinfo will be displayed.

Next step is to install xdebug via pecl by running:

sudo pecl install xdebug

If all went well you should have the xdebug library located at /usr/local/zend/lib/php_extensions/xdebug.so . If you don’t have it there, then something went wrong and you should NOT continue reading. This issue must be sorted first.

Next you need to comment out the 1st line of /usr/local/zend/etc/conf.d/debugger.ini so it looks like this:

#open editor
gksu gedit /usr/local/zend/etc/conf.d/debugger.ini

# this is how the 1st two lines should look afterwards
; register the extension to be loaded by Zend Extension Manager
;zend_extension_manager.dir.debugger=/usr/local/zend/lib/debugger

Xdebug needs to be loaded before Zend Extension Manager, that’s why you need to add the following line just on top of the /usr/local/zend/etc/ext.d/extension_manager.ini

#open the editor
gksu gedit /usr/local/zend/etc/ext.d/extension_manager.ini

#add this line on 1st line: 
zend_extension=/usr/local/zend/lib/php_extensions/xdebug.so

#save the file

Restart zend server by running:

sudo /etc/init.d/zend-server restart

You can check if xdebug is working like so:

php -i |grep xdebug

The output should be something similar to this:

xdebug
xdebug support => enabled
xdebug.auto_trace => Off => Off
xdebug.collect_includes => On => On
xdebug.collect_params => 0 => 0
xdebug.collect_return => Off => Off
xdebug.collect_vars => Off => Off
xdebug.default_enable => On => On
xdebug.dump.COOKIE => no value => no value
xdebug.dump.ENV => no value => no value
xdebug.dump.FILES => no value => no value
xdebug.dump.GET => no value => no value
xdebug.dump.POST => no value => no value
xdebug.dump.REQUEST => no value => no value
xdebug.dump.SERVER => no value => no value
xdebug.dump.SESSION => no value => no value
xdebug.dump_globals => On => On
xdebug.dump_once => On => On
xdebug.dump_undefined => Off => Off
xdebug.extended_info => On => On
xdebug.idekey => mimir => no value
xdebug.manual_url => http://www.php.net => http://www.php.net
xdebug.max_nesting_level => 100 => 100
xdebug.profiler_aggregate => Off => Off
xdebug.profiler_append => Off => Off
xdebug.profiler_enable => Off => Off
xdebug.profiler_enable_trigger => Off => Off
xdebug.profiler_output_dir => /tmp => /tmp
xdebug.profiler_output_name => cachegrind.out.%p => cachegrind.out.%p
xdebug.remote_autostart => Off => Off
xdebug.remote_enable => Off => Off
xdebug.remote_handler => dbgp => dbgp
xdebug.remote_host => localhost => localhost
xdebug.remote_log => no value => no value
xdebug.remote_mode => req => req
xdebug.remote_port => 9000 => 9000
xdebug.show_exception_trace => Off => Off
xdebug.show_local_vars => Off => Off
xdebug.show_mem_delta => Off => Off
xdebug.trace_format => 0 => 0
xdebug.trace_options => 0 => 0
xdebug.trace_output_dir => /tmp => /tmp
xdebug.trace_output_name => trace.%c => trace.%c
xdebug.var_display_max_children => 128 => 128
xdebug.var_display_max_data => 512 => 512
xdebug.var_display_max_depth => 3 => 3

Note the xdebug support => enabled on line 2.

Hope that helps 🙂

Categories
ubuntu zend framework

Setup ZF using svn externals

After you create a project with zf tool, put it on SVN, you might want to include inside /library the ZF, but you want to have the bleeding edge all the time. You can include it as a svn external like this:

cd library/
svn propset svn:externals 'Zend http://framework.zend.com/svn/framework/standard/trunk/library/Zend/' . 

Next time when you run svn up, your project will fetch the latest ZF from it’s repo.

Categories
linux ubuntu

Remove .svn folders recursively

I know that you have to use svn export in order to get a copy of the repo without the .svn folders inside, but sometimes you have to work with what you have, a checkout of a repo with .svn folders. And you want them removed.

After googling a bit i found a great way to recursively remove .svn folders. Just type the following while in the root of your checkout:

rm -rf `find . -type d -name .svn`

This tip was found on http://www.anyexample.com/linux_bsd/bash/recursively_delete__svn_directories.xml

Categories
linux ubuntu

Enable ls color support

By default i like to use the Green on Black color scheme with my terminals. When i enable the theme though, ls loses somehow the ability to show files in colors. The trick to enable the feature is simple. One just has to run ls like this:

ls --color=auto

Unfortunately this won’t stick, and it’a a bit of a drag to always add the –color=auto part. To solve this, one has to create an alias to ls to point to ls –color=auto. You can do this by adding the following to ~/.bashrc

# enable color support of ls and also add handy aliases
if [ "$TERM" != "dumb" ]; then
    eval "`dircolors -b`"
    alias ls='ls --color=auto'
fi

Tada!

Categories
linux ubuntu

Ailurus project

I’ve been contacted a few days ago by Homer Xing from Ailurus project.

He’s notified me about the addition of the script to install native flash player 64bit on ubuntu in the Ailurus project. I was thrilled. Since then Homer even built a version of the script to work on Fedora (which is now on this site also available) and we got in touch over IM.

I think Ailurus is an amazing project. Hardcore Linux users might not see why it’s important to have projects like these, but someone new to linux will appreciate it. I can’t stress enough how hard the Linux world seems to old windows users. It’s not a matter of Linux being hard to learn, but more of windows being hard to forget. With tools like Ailurus that make installing applications a snap, i think the transition is made much easier.

Looking forward for future releases!

Categories
ubuntu

SVN Ignore all files inside a folder

If you want to ignore certain file types inside a folder on SVN it’s pretty easy:

svn propset svn:ignore "*.tgz" backup

It’s a bit more complicated if you want to ignore everything inside a folder (be it files or folders). If you have a structure as the following:

/public/media
/public/media/member
/public/media/member/artist
/public/media/member/fan
/public/media/member/label

and you want to ignore everything inside public/media, just do:

svn propset svn:ignore "*" public/media/
Categories
ubuntu

Repair Perl Locale Errors on Ubuntu Server

Installed Ubuntu Server Karmic just fine and noticed this perl error on the first “apt-get upgrade” i ran.

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = "en_US",
	LC_CTYPE = "en_US.UTF-8",
	LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

After a bit of looking around on the internets i found out the solution:

sudo apt-get install language-pack-en-base
sudo dpkg-reconfigure locales

That’s it 🙂

Categories
ubuntu

Video working with Logitech QuickCam Communicate STX on Linux 64bit

I have a 046d:08d7 Logitech, Inc. QuickCam Communicate STX that works perfectly well with all the native linux applications (ekiga, cheese, empathy) and even with the Flash Player powered TokBox, but it does not work with Skype.

After a bit of digging I’ve found out how to make Skype detect the video input from my Webcam. The secret is to preload the v4l1compat.so library as shown on the Ubuntu Wiki:

bash -c 'LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so skype'

That does the trick for 32bit systems, and since there isn’t a native Skype version for 64bit

[email protected]:~$ file /usr/bin/skype 
/usr/bin/skype: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped

we need to tell skype to preload the 32bit version of the library like so:

bash -c 'LD_PRELOAD=/usr/lib32/libv4l/v4l1compat.so skype'

Now video works perfectly using Skype 2.1.0.47 under Ubuntu 9.10 64bit

Categories
ubuntu

Listen to Windows Media Player Feeds on Linux and Mac

If you want to listed to an audio/video feed while you’re running Linux or Mac is a bit ridiculous for a site to suggest you to install WMP (windows media player). There is one solution tho. Open the feed and it should get a windows that is expecting you to play the feed with WMP. View the source code of that page and you should find the URL of the feed.

You can play the feed easily on Linux or Mac using VLC. Just open a terminal an type:

vlc feed_url_here
Categories
PHP ubuntu zend framework

Install Zend Framework and Zend_Tool using PEAR on Ubuntu

I work every day with Zend Framework and the easiest way i find to install it is by using the PEAR packages offered by the betta channel ZF Campus

Here is what you have to do install Zend Framework and Zend_Tool using PEAR on Ubuntu:

sudo pear channel-discover pear.zfcampus.org
sudo pear install zfcampus/zf
# for some reason the installer does not correctly link the zf.php and Zend_Tool won't work
# so we need to setup a symlink
sudo ln -s /usr/share/php/zf.php /usr/bin/zf.php

That’s it! You can now test your install:

zf show version

In my care the output was this one:

[email protected]:~$ zf show version
Zend Framework Version: 1.9.2