<html>
<head>
<title>Troubleshooting</title>
<link rel="stylesheet" type="text/css" href="../media/style.css">
</head>
<body>
<table border="0" cellspacing="0" cellpadding="0" height="48" width="100%">
<tr>
<td class="header_top">PHPonTrax</td>
</tr>
<tr><td class="header_line"><img src="../media/empty.png" width="1" height="1" border="0" alt="" /></td></tr>
<tr>
<td class="header_menu">
[ <a href="../classtrees_PHPonTrax.html" class="menu">class tree: PHPonTrax</a> ]
[ <a href="../elementindex_PHPonTrax.html" class="menu">index: PHPonTrax</a> ]
[ <a href="../elementindex.html" class="menu">all elements</a> ]
</td>
</tr>
<tr><td class="header_line"><img src="../media/empty.png" width="1" height="1" border="0" alt="" /></td></tr>
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="200" class="menu">
<div id="todolist">
<p><a href="../todolist.html">Todo List</a></p>
</div>
<b>Packages:</b><br />
<a href="../li_PHPonTrax.html">PHPonTrax</a><br />
<a href="../li_PHPonTraxTest.html">PHPonTraxTest</a><br />
<br /><br />
<b>Tutorials/Manuals:</b><br />
<strong>Package-level:</strong>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_PHPonTrax.pkg.html">PHP On Trax</a>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_rails_examples.pkg.html">Examples From The Rails Book</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_simpleapp.pkg.html">Build A Simple Trax Application</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_database.pkg.html">Create A Database and User</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_advbuild.pkg.html">Advanced Application Build Topics</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_naming.pkg.html">The Trax Naming Convention</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_troubleshoot.pkg.html">Troubleshooting</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_reference.pkg.html">Reference</a>
</ul>
</li></ul>
<strong>Class-level:</strong>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_ActiveRecordHelper.cls.html">ActiveRecordHelper</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_FormTagHelper.cls.html">FormTagHelper</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_Helpers.cls.html">Helpers</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_UrlHelper.cls.html">UrlHelper</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_FormHelper.cls.html">FormHelper</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_InputFilter.cls.html">InputFilter</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_ActionMailer.cls.html">ActionMailer</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_ApplicationController.cls.html">ApplicationController</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_ActionController.cls.html">ActionController</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_ActiveRecord.cls.html">ActiveRecord</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_DateHelper.cls.html">DateHelper</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_Router.cls.html">Router</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_FormOptionsHelper.cls.html">FormOptionsHelper</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_TraxGenerator.cls.html">TraxGenerator</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_Session.cls.html">Session</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_Inflector.cls.html">Inflector</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_ActiveRecordError.cls.html">ActiveRecordError</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_ActionControllerError.cls.html">ActionControllerError</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_ScaffoldController.cls.html">ScaffoldController</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_Dispatcher.cls.html">Dispatcher</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_TraxError.cls.html">TraxError</a>
</ul>
<ul>
<li type="square"><a href="../PHPonTrax/tutorial_ApplicationMailer.cls.html">ApplicationMailer</a>
</ul>
<b>Files:</b><br />
<div class="package">
<a href="../PHPonTrax/_vendor_trax_action_controller_php.html"> action_controller.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_action_mailer_php.html"> action_mailer.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_action_view_php.html"> action_view.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_active_record_php.html"> active_record.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_action_view_helpers_active_record_helper_php.html"> active_record_helper.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_add_phtml.html"> add.phtml
</a><br>
<a href="../PHPonTrax/_data_app_controllers_application_php.html"> application.php
</a><br>
<a href="../PHPonTrax/_data_app_views_layouts_application_phtml.html"> application.phtml
</a><br>
<a href="../PHPonTrax/_data_app_helpers_application_helper_php.html"> application_helper.php
</a><br>
<a href="../PHPonTrax/_data_app_application_mailer_php.html"> application_mailer.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_action_view_helpers_asset_tag_helper_php.html"> asset_tag_helper.php
</a><br>
<a href="../PHPonTrax/_test_layouts_catalog_phtml.html"> catalog.phtml
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_generator_templates_controller_php.html"> controller.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_controller_php.html"> controller.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_action_view_helpers_date_helper_php.html"> date_helper.php
</a><br>
<a href="../PHPonTrax/_data_config_environments_development_php.html"> development.php
</a><br>
<a href="../PHPonTrax/_data_public_dispatch_php.html"> dispatch.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_dispatcher_php.html"> dispatcher.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_edit_phtml.html"> edit.phtml
</a><br>
<a href="../PHPonTrax/_data_config_environment_php.html"> environment.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_error_phtml.html"> error.phtml
</a><br>
<a href="../PHPonTrax/_vendor_trax_action_view_helpers_form_helper_php.html"> form_helper.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_action_view_helpers_form_options_helper_php.html"> form_options_helper.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_generator_templates_form_scaffolding_phtml.html"> form_scaffolding.phtml
</a><br>
<a href="../PHPonTrax/_vendor_trax_action_view_helpers_form_tag_helper_php.html"> form_tag_helper.php
</a><br>
<a href="../PHPonTrax/_data_script_generate_php.html"> generate.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_helper_php.html"> helper.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_action_view_helpers_php.html"> helpers.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_index_phtml.html"> index.phtml
</a><br>
<a href="../PHPonTrax/_vendor_trax_inflector_php.html"> inflector.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_input_filter_php.html"> input_filter.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_action_view_helpers_javascript_helper_php.html"> javascript_helper.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_generator_templates_layout_phtml.html"> layout.phtml
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_layout_phtml.html"> layout.phtml
</a><br>
<a href="../PHPonTrax/_makepkg_php.html"> makepkg.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_model_php.html"> model.php
</a><br>
<a href="../PHPonTrax/_data_config_environments_production_php.html"> production.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_router_php.html"> router.php
</a><br>
<a href="../PHPonTrax/_data_config_routes_php.html"> routes.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_scaffold_controller_php.html"> scaffold_controller.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_session_php.html"> session.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_show_phtml.html"> show.phtml
</a><br>
<a href="../PHPonTrax/_data_config_environments_test_php.html"> test.php
</a><br>
<a href="../PHPonTrax/_trax_php.html"> trax.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_trax_exceptions_php.html"> trax_exceptions.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_trax_generator_php.html"> trax_generator.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_action_view_helpers_url_helper_php.html"> url_helper.php
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_view_phtml.html"> view.phtml
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_generator_templates_view_add_phtml.html"> view_add.phtml
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_generator_templates_view_edit_phtml.html"> view_edit.phtml
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_generator_templates_view_index_phtml.html"> view_index.phtml
</a><br>
<a href="../PHPonTrax/_vendor_trax_templates_scaffolds_generator_templates_view_show_phtml.html"> view_show.phtml
</a><br>
</div><br />
<b>Classes:</b><br />
<div class="package">
<a href="../PHPonTrax/.html"></a><br />
<a href="../PHPonTrax/ActionController.html">ActionController</a><br />
<a href="../PHPonTrax/ActionControllerError.html">ActionControllerError</a><br />
<a href="../PHPonTrax/ActionMailer.html">ActionMailer</a><br />
<a href="../PHPonTrax/ActiveRecord.html">ActiveRecord</a><br />
<a href="../PHPonTrax/ActiveRecordError.html">ActiveRecordError</a><br />
<a href="../PHPonTrax/ActiveRecordHelper.html">ActiveRecordHelper</a><br />
<a href="../PHPonTrax/ApplicationController.html">ApplicationController</a><br />
<a href="../PHPonTrax/ApplicationMailer.html">ApplicationMailer</a><br />
<a href="../PHPonTrax/AssetTagHelper.html">AssetTagHelper</a><br />
<a href="../PHPonTrax/DateHelper.html">DateHelper</a><br />
<a href="../PHPonTrax/Dispatcher.html">Dispatcher</a><br />
<a href="../PHPonTrax/FormHelper.html">FormHelper</a><br />
<a href="../PHPonTrax/FormOptionsHelper.html">FormOptionsHelper</a><br />
<a href="../PHPonTrax/FormTagHelper.html">FormTagHelper</a><br />
<a href="../PHPonTrax/Helpers.html">Helpers</a><br />
<a href="../PHPonTrax/Inflector.html">Inflector</a><br />
<a href="../PHPonTrax/InputFilter.html">InputFilter</a><br />
<a href="../PHPonTrax/JavaScriptHelper.html">JavaScriptHelper</a><br />
<a href="../PHPonTrax/Router.html">Router</a><br />
<a href="../PHPonTrax/ScaffoldController.html">ScaffoldController</a><br />
<a href="../PHPonTrax/Session.html">Session</a><br />
<a href="../PHPonTrax/TraxError.html">TraxError</a><br />
<a href="../PHPonTrax/TraxGenerator.html">TraxGenerator</a><br />
<a href="../PHPonTrax/UrlHelper.html">UrlHelper</a><br />
</div>
</td>
<td>
<table cellpadding="10" cellspacing="0" width="100%" border="0"><tr><td valign="top">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="10%" align="left" valign="bottom"><a href=
"../PHPonTrax/tutorial_naming.pkg.html">Prev</a></td>
<td width="80%" align="center" valign="bottom"></td>
<td width="10%" align="right" valign="bottom"><a href=
"../PHPonTrax/tutorial_reference.pkg.html">Next</a></td>
</tr>
</table>
<span><a name="reference.troubleshoot"></a><h2 class="title">Troubleshooting</h2><a name="troubleshoot.troubleshoot_noindex.html"></a><h3 class="title">Can't see index.html after installation</h3><ol><li>Verify that Apache is actually running. On a Linux or
Unix platform, Apache usually runs as
<code>httpd</code>, so try:
<pre class="example">$ <strong>ps -ef|grep httpd</strong></pre>
The normal result is a list of several processes running
<code>httpd</code>. If Apache is not running, start it.
The usual way to start Apache is to run, as superuser:
<pre class="example"># <strong>apachectl start</strong></pre></li>
<li>Find the Apache configuration file that is actually
being used by the running Apache. The usual location is
<code>/etc/httpd/conf/httpd.conf</code> but it may be
elsewhere. Don't ignore the possibility that there is more than
one <code>httpd.conf</code> on the system, in which case
you need to figure out which is in use. Examine the value
assigned to <code>DocumentRoot</code> in the configuration
and verify that it is what you expected.</li>
<li>Examine the Apache log files for clues. The location of
the error log file is determined by the value assigned to
<code>ErrorLog</code> in
<code>httpd.conf</code>.</li>
<li>Is Apache able to access
<code>index.html</code>? Check the Unix permissions on that
file and all the directories that contain it. The permissions
must permit Apache to read all containing directories and
the file.</li></ol><hr />
<a name="troubleshoot.troubleshoot_"></a><h3 class="title">Don't see 'Controller not found' after deleting index.html</h3><p>Normal Trax processing of a request goes through the following
steps:</p>
<ol><li>The browser sends Apache a URL which is in the area of
the Trax application.</li>
<li>Apache starts visiting the directories in that area,
starting with the top (leftmost in the URL).</li>
<li>In the top Trax application directory it finds file
<code>.htaccess</code> which contains Apache configuration
directives, which Apache interprets. The
<a href="http://www.php.net/manual/en/configuration.changes.php">php_value</a>
directive sets the list of
directories where Apache should look for PHP files. The
following <code>Rewrite...</code> directives are the steps
that Apache is to take in transforming the URL into a Trax
command. Apache rewrites the URL, with the result that file
<a href="../PHPonTrax/_data_public_dispatch_php.html">dispatch.php</a> is loaded and
executed.</li>
<li><code>dispatch.php</code> loads the Trax
application description file
<a href="../PHPonTrax/_data_config_environment_php.html">environment.php</a>, which it finds in one of the
directories listed in the <code>php_value</code>
directive.</li>
<li>With the Trax environment established, an instance of
<a href="../PHPonTrax/Dispatcher.html">Dispatcher</a> is created and its
<a href="../PHPonTrax/Dispatcher.html#methoddispatch">dispatch()</a>
method is invoked. This finds and calls the Trax action
controller which interprets the URL.</li></ol>
<p>Do the following to check the various places where the
process can break down:</p>
<ol><li>Verify the name of the per-directory configuration file.
File <code>httpd.conf</code> should contain a line
like:
<pre class="example">AccessFileName .htaccess</pre>
If <code>AccessFileName</code> is not
<code>.htaccess</code>, change the name of file
<code>.htaccess</code> to whatever the configuration wants.</li>
<li>Verify that Apache is configured to follow commands from a
<code>.htaccess</code> file in the Trax application
directory. File <code>httpd.conf</code> should permit the
access file (normally <code>.htaccess</code> unless changed)
to override the configuration. The Apache directive is
<a href="http://httpd.apache.org/docs/2.0/mod/core.html#allowoverride">AllowOverride</a>
all and it must apply to the
directory with the Trax application.</li>
<li>Verify that <code>dispatch.php</code> is being
loaded and executed by editting it to insert
<code>echo</code> statements before and after
<code>require_once("environment.php");</code>. The browser
should display the output of both <code>echo</code>
statements. If neither is displayed then there is a problem with
the rewrite rules. If only the first <code>echo</code> is
displayed then the <code>require</code> failed, meaning that
<code>mod_php</code> couldn't find
<code>environment.php</code> in the directories listed in
the <code>php_value</code> statement.</li>
<li>If you need to test the Apache Rewrite rules, the way to
watch them operate is with the
<a href="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritelog">RewriteLog</a>
and
<a href="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriteloglevel">RewriteLogLevel</a>
directives. You must add them to
<code>httpd.conf</code> since Apache won't honor them if they
appear in <code>.htaccess</code>. An example of what you
might add is:
<pre class="example">RewriteLog /tmp/rewrite
RewriteLogLevel 9</pre>
This will write a description of each stage of rewrite processing
to file <code>/tmp/rewrite</code>. The overhead is
considerable so be sure to remove this from the configuration when
you don't need it.</li>
<li>If <code>require_once("environment.php");</code>
fails, check that the list of directories set by
<code>php_value</code> in
<code>.htaccess</code> matches the actual location of
<code>environment.php</code> and that the permissions on the
files and directories permit Apache to read them. Check the
Apache error log for relevant messages. Since one of the functions
of <code>environment.php</code> is to switch Apache error
logging to the Trax log selected by the configured value of
TRAX_MODE, check the Trax logs for relevant messages.</li></ol><hr />
<a name="troubleshoot.troubleshoot_"></a><h3 class="title"></h3><hr />
<a name="troubleshoot.troubleshoot_"></a><h3 class="title"></h3><hr />
<a name="troubleshoot.troubleshoot_"></a><h3 class="title"></h3><hr /></span>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="33%" align="left" valign="top"><a href="../PHPonTrax/tutorial_naming.pkg.html">Prev</a></td>
<td width="34%" align="center" valign="top"><a href=
"../PHPonTrax/tutorial_PHPonTrax.pkg.html">Up</a></td>
<td width="33%" align="right" valign="top"><a href=
"../PHPonTrax/tutorial_reference.pkg.html">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top">The Trax Naming Convention</td>
<td width="34%" align="center" valign="top">PHP On Trax</td>
<td width="33%" align="right" valign="top">Reference</td>
</tr>
</table>
<div class="credit">
<hr />
Documentation generated on Thu, 04 May 2006 19:46:54 -0600 by <a href="http://www.phpdoc.org">phpDocumentor 1.3.0RC4</a>
</div>
</td></tr></table>
</td>
</tr>
</table>
</body>
</html>