[2 days left] What’s wrong with your cloud strategy? Learn why multicloud solutions matter with Nimble Storage.Register Now

x
?
Solved

Troubleshooting CodeIgniter

Posted on 2013-01-07
8
Medium Priority
?
426 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 200 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
Technology Partners: 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!

 

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 1800 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

Technology Partners: 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

These days socially coordinated efforts have turned into a critical requirement for enterprises.
Since pre-biblical times, humans have sought ways to keep secrets, and share the secrets selectively.  This article explores the ways PHP can be used to hide and encrypt information.
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 create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …
Suggested Courses

656 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