Troubleshooting - Common issues

You'll find here how to solve most common issues.

If you don't find solution feel free to contact me ; if possible send me your ftp access & url

White page / Error 500

If your page is absolutely white or returns "HTTP ERROR 500" it means you have a php error.

To display error message, you have to enable php display errors.

  1. Add the following code just after use statements :
    <?php
    use phpformbuilder\Form;
    use phpformbuilder\Validator\Validator;
    
    // add the line below to your code :
    ini_set('display_errors', 1);
  2. Refresh your page, then you'll see what error is thrown, and probably find solution in other parts of this document.
    Once you solved your problem, remove the ini_set() line if you don't want errors to be displayed anymore.

Warning: include_once([...]): failed to open stream: No such file or directory

Php Form Builder requires a single file, which is called using php include_once() function :

<?php
include_once rtrim($_SERVER['DOCUMENT_ROOT'], DIRECTORY_SEPARATOR) . '/phpformbuilder/Form.php';

If path to file inside parenthesis is wrong, file is not found.

To solve this you've got to find the right path leading to your phpformbuilder directory.

Try one of the followings, depending on your situation :

  1. If phpformbuilder directory is not at the root of your project, add beginning directory(ies) to your paths :
    <?php
    
    // replace "your-dir" with yours in the following line
    include_once rtrim($_SERVER['DOCUMENT_ROOT'], DIRECTORY_SEPARATOR) . '/your-dir/phpformbuilder/Form.php';
  2. Use a relative path, leading from the original file (your form) to phpformbuilder dir. You can for example try one of the followings :
    <?php
    
    // with a structure like :
    // contact-form.php
    // phpformbuilder/Form.php
    include_once 'phpformbuilder/Form.php';
    
    // with a structure like :
    // subfolder/contact-form.php
    // phpformbuilder/Form.php
    include_once '../phpformbuilder/Form.php';

Fatal error: Class 'phpformbuilder\Form' not found

See Warning: include_once([...]) (same error, same solution)

Plugins don't work

  1. Open your browser's console (instructions here)

    You have to solve all errors you see in console. Errors probably come from your page content, not from phpformbuilder itself.

    Be sure you include first jQuery, THEN Bootstrap js, THEN phpformbuilder plugins code :

        <!-- jQuery -->
                <script src="//code.jquery.com/jquery.js"></script>
                <!-- Bootstrap JavaScript -->
                <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
                <?php
                    $form->printIncludes('js');
                    $form->printJsCode();
                ?>

     

  2. In a few cases, your server may not be correctly configured. Consequence is that the plugins URLs are wrong.

    Solution is to set the URL to plugins directory manually:

    // Set URL to match your plugins directory
    $form->setPluginsUrl('http://phpformbuilder/plugins/');

CSS issues

Included templates use a custom version of Bootstrap's css. You'll find it in phpformbuilder/templates/assets/css/bootstrap.min.css.

Set the correct path from your form to this css :

    <!-- Bootstrap CSS - Change path with your own -->
    <link href="../assets/css/bootstrap.min.css" rel="stylesheet">

... Or replace with Bootstrap CDN :

    <!-- Bootstrap CSS CDN -->
    <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">

Can't Submit form (using jQuery validation plugin)

jQuery validation plugin is complex and can have unexpected behaviors if it encounters configuration issues or malformed html.

To solve this :

  1. Don't use any input, button or other form element named "submit". It's not compatible with jQuery validation (reserved name).
  2. Validate your code W3C validator
  3. Open your browser's console (F12) and look for errors.
  4. Open phpformbuilder/plugins-config/formvalidation.xml and use console.log (un-comment) to find out what's going on