donbuche
donbuche

Reputation: 101

How to include php file in drupal 7

I'm coding a form in Drupal 7, and I want to 'include' a php file that adds my DB connection variables to my code.

I've tested my code in several ways, and I'm sure that the 'include' makes me get a WSOD when I run Cron in my site.

I've Googled about this and I tried:

include("/sites/all/libraries/php/connection.inc");

include("./sites/all/libraries/php/connection.inc");

include"./sites/all/libraries/php/connection.inc";

I also tried the above with '.php' extension.

And my last try:

define('__ROOT__', dirname(dirname(__FILE__)));
include(__ROOT__.'/sites/all/libraries/php/connection.inc');

Sometimes I get a WSOD when trying to run Cron, and sometimes my page styles get broken when I submit a form.

What is the correct way to include a PHP file manually in Drupal? Note that I don't want to use the 'Drupal way' to do this or to use the webform module. I want to code it manually with PHP.

Upvotes: 4

Views: 25021

Answers (4)

David Lukac
David Lukac

Reputation: 738

In my opinion these are correct Drupal (7) ways to include code:

  1. module_load_include(); function - Drupal API documentation - to include any PHP files from within your or other modules where needed,
  2. files[] = ... in your_module.info file to autoload include classes and interfaces within your own module - Writing .info file documentation.

Libraries module provides it's own way to include external PHP files from the libraries.

Upvotes: 6

ElusiveMind
ElusiveMind

Reputation: 146

The second answer is the correct "Drupal way". The one that was accepted as the answer has many potential pitfalls if locations of things change. Using drupal_get_path is the best way. This is also especially true if you are trying to include a file that may not be fully bootstrapped during a module update hook.

Upvotes: 0

schlicki
schlicki

Reputation: 374

The libraries directory should only be used to store files shipped as a library through the libraries module (see here https://drupal.org/project/libraries).

For both examples lets assume library.inc is our file and relative_path_to is the relative path based on the module directory to our library.inc file.

To just include a file you can use:

require(drupal_get_path('module', 'module_name') . '/relative_path_to/library.inc');

And to do it the Drupal way (https://api.drupal.org/api/drupal/includes!module.inc/function/module_load_include/7):

module_load_include('inc', 'module_name', '/relative_path_to/library');

Cheers, j

Upvotes: 13

Mehul Jethloja
Mehul Jethloja

Reputation: 637

Try this ways

1) require 'includes/iso.inc';
2) include_once  'includes/iso.inc';
3) include ('includes/iso.inc');

OR Drupal Ways

include_once DRUPAL_ROOT . '/includes/iso.inc';

Upvotes: 6

Related Questions