Solved

Troubleshooting CodeIgniter

Posted on 2013-01-07
8
387 Views
Last Modified: 2013-01-08
I'm trying to understand some CodeIgniter code that has landed my lap and I'm a bit frustrated by not being able to echo out variables for troubleshooting.  That is, echoes in the controller classes don't seem to work, so I can't see what variables are being handled. Admittedly I'm new to CodeIgniter and haven't gone  though the entire manual yet (though I did look for a troubleshooting section and didn't find one).  I ordered a couple of Amazon books tonight, but they're no help until they get here.

I wonder if someone out there might have some CodeIgniter experience and be able to say a few words about how you troubleshoot CodeIgniter projects. The framework seems well thought out so I have to believe there's some help built in that I just don't know about.

Thanks for any info.
Steve
0
Comment
Question by:steva
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
8 Comments
 
LVL 31

Expert Comment

by:Marco Gasi
ID: 38753740
You can't echo variables from within a controller. You can create a test view which ou pas data to and then you print out them on screen.

if in your controller you have something like

  public function Hello($name)
  {
    $data['base'] = $this->base;
    $data['css'] = $this->css;
    $data['mytitle'] = 'Welcome to this site';
    $data['mytext'] = "Hello, ". ucfirst($name) "!";
    $this->load->view('hello', $data);
  } 

Open in new window

You can replace the standard view with a test view where you only print out $data to check if they are correct:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<title>Web test Site</title>
<base href= <?php echo $base; ?>>
<link rel="stylesheet" type="text/css" href="<?php echo "$base/$css";?>">
</head>
<body>
<?php 
echo $mytitle . "<br />"; 
echo $mytext . "<br />"; 
?> 
</body>
</html>

Open in new window


If you post hewree some code we can help better.

Cheers
0
 
LVL 26

Assisted Solution

by:EddieShipman
EddieShipman earned 50 total points
ID: 38755092
I just write my variables out to a file and then examine:
$fp = fopen("/var/tmp/".__CLASS__.".txt", 'a');
fwrite($fp, $variable_to_record . "\n");
fclose($fp);

Open in new window

0
 

Author Comment

by:steva
ID: 38755267
Marqus, Thanks.  That helps.  

I appreciate your offering to look at some code.

Here's the beginning of an editor.php file that creates an editor class, that's giving me some trouble:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Editor extends CI_Controller {
	
	/* Constructor */
	
	public function __construct()
	{
		parent::__construct();
		$this->load->helper(array('fgimages','language'));
		
		if (is_allowed() === FALSE)
		{
			exit;
		}
		
		$this->config->load('uploader_settings', TRUE);
	}

Open in new window

I see from the online manual that the helper "array" seems to use the first parameter as key into the array named by the second parameter and return the value there.  But there's no "language" array that I can find in the code.  And where is the value found transferred to?  It gets "loaded" but into what?

Also, the line
                  if (is_allowed() === FALSE)
is a bit puzzling.  is_allowed() doesn't seem to be a PHP construct and it doesn't show up in the online index of the CodeIgniter books I ordered from Amazon.

Thanks for your help.
Steve
0
Instantly Create Instructional Tutorials

Contextual Guidance at the moment of need helps your employees adopt to new software or processes instantly. Boost knowledge retention and employee engagement step-by-step with one easy solution.

 

Author Comment

by:steva
ID: 38755310
Eddie,

Thanks for that tip. I keep expecting, though,  to find a whole bag of troubleshooting tools built into CodeIgniter.  I guess not.
0
 
LVL 31

Expert Comment

by:Marco Gasi
ID: 38755886
Hi.

$this->load->helper(array('fgimages','language'));
This laine loads two helpers: fgimages and language. The second one resides in system/helpers and it's a standard CI helper. The first one seems to be a custom helper and you could find it, if it is not in system/helpers folder, within application/helpers folder.

I'm sure is_allowed is a function of fgimages helper which checks if the image type is allowed against an array mayby in the config file or in the fgimages_helper itself.

If you dont find fgimages helper in the folders I mentioned above, look around through your directory tree.

Cheers
0
 
LVL 31

Accepted Solution

by:
Marco Gasi earned 450 total points
ID: 38755976
For debugging purposes, you have to choose a log threshold in file application/config/config.php. This is what you should find in your config.php file:
|--------------------------------------------------------------------------
|
| If you have enabled error logging, you can set an error threshold to
| determine what gets logged. Threshold options are:
| You can enable error logging by setting a threshold over zero. The
| threshold determines what gets logged. Threshold options are:
|
|	0 = Disables logging, Error logging TURNED OFF
|	1 = Error Messages (including PHP errors)
|	2 = Debug Messages
|	3 = Informational Messages
|	4 = All Messages
|
| For a live site you'll usually only enable Errors (1) to be logged otherwise
| your log files will fill up very fast.
|
*/
$config['log_threshold'] = 0;

Open in new window


The output file will be in application/logs folder but you can set another path in config.php:

/*
|--------------------------------------------------------------------------
| Error Logging Directory Path
|--------------------------------------------------------------------------
|
| Leave this BLANK unless you would like to set something other than the default
| application/logs/ folder. Use a full server path with trailing slash.
|
*/
$config['log_path'] = '';

Open in new window


Hope this helps.

I don't know which book have you about CI: I'm now reading "CodeIgniter for Rapid PHP Application Development" by David Upton: it speaks about CI 1.7 so not all is right but it seems to be a good manual. Anyway you can find some info here: http://ellislab.com/codeigniter/user-guide/general/errors.html

Cheers
0
 

Author Comment

by:steva
ID: 38757126
Marqus,

Yes, I found "language_helper.php" in the system/helpers directory and "fbimages_helper.php" was in application/helpers. " is_allowed.php"  was a file in the project folder, at the same level as ci, which just returns true, for now.

One of the books I ordered ("CodeIgniter for Rapic PHP Application Development") came today, so I'll jump off into that now.  

Thanks for all your help.

Steve
0
 
LVL 31

Expert Comment

by:Marco Gasi
ID: 38757834
Thanks for points and best of luck with your project.
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Author Note: Since this E-E article was originally written, years ago, formal testing has come into common use in the world of PHP.  PHPUnit (http://en.wikipedia.org/wiki/PHPUnit) and similar technologies have enjoyed wide adoption, making it possib…
Password hashing is better than message digests or encryption, and you should be using it instead of message digests or encryption.  Find out why and how in this article, which supplements the original article on PHP Client Registration, Login, Logo…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
The viewer will learn how to count occurrences of each item in an array.

730 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question