Chris@0: #!/usr/bin/env php Chris@0: " Chris@0: Example: {$script} "http://mysite.org/node" Chris@0: Chris@0: All arguments are long options. Chris@0: Chris@0: --help This page. Chris@0: Chris@0: --root Set the working directory for the script to the specified path. Chris@0: To execute Drupal this has to be the root directory of your Chris@0: Drupal installation, f.e. /home/www/foo/drupal (assuming Drupal Chris@0: running on Unix). Current directory is not required. Chris@0: Use surrounding quotation marks on Windows. Chris@0: Chris@0: --verbose This option displays the options as they are set, but will Chris@0: produce errors from setting the session. Chris@0: Chris@0: URI The URI to execute, i.e. http://default/foo/bar for executing Chris@0: the path '/foo/bar' in your site 'default'. URI has to be Chris@0: enclosed by quotation marks if there are ampersands in it Chris@0: (f.e. index.php?q=node&foo=bar). Prefix 'http://' is required, Chris@0: and the domain must exist in Drupal's sites-directory. Chris@0: Chris@0: If the given path and file exists it will be executed directly, Chris@0: i.e. if URI is set to http://default/bar/foo.php Chris@0: and bar/foo.php exists, this script will be executed without Chris@0: bootstrapping Drupal. To execute Drupal's update.php, specify Chris@0: http://default/update.php as the URI. Chris@0: Chris@0: Chris@0: To run this script without --root argument invoke it from the root directory Chris@0: of your Drupal installation with Chris@0: Chris@0: ./scripts/{$script} Chris@0: \n Chris@0: EOF; Chris@0: exit; Chris@0: } Chris@0: Chris@17: $cmd = 'index.php'; Chris@0: // define default settings Chris@0: $_SERVER['HTTP_HOST'] = 'default'; Chris@0: $_SERVER['PHP_SELF'] = '/index.php'; Chris@0: $_SERVER['REMOTE_ADDR'] = '127.0.0.1'; Chris@0: $_SERVER['SERVER_SOFTWARE'] = NULL; Chris@0: $_SERVER['REQUEST_METHOD'] = 'GET'; Chris@0: $_SERVER['QUERY_STRING'] = ''; Chris@0: $_SERVER['PHP_SELF'] = $_SERVER['REQUEST_URI'] = '/'; Chris@0: $_SERVER['HTTP_USER_AGENT'] = 'console'; Chris@0: Chris@0: // toggle verbose mode Chris@0: if (in_array('--verbose', $_SERVER['argv'])) { Chris@14: $_verbose_mode = TRUE; Chris@0: } Chris@0: else { Chris@14: $_verbose_mode = FALSE; Chris@0: } Chris@0: Chris@0: // parse invocation arguments Chris@0: while ($param = array_shift($_SERVER['argv'])) { Chris@0: switch ($param) { Chris@0: case '--root': Chris@0: // change working directory Chris@0: $path = array_shift($_SERVER['argv']); Chris@0: if (is_dir($path)) { Chris@0: chdir($path); Chris@0: if ($_verbose_mode) { Chris@0: echo "cwd changed to: {$path}\n"; Chris@0: } Chris@0: } Chris@0: else { Chris@0: echo "\nERROR: {$path} not found.\n\n"; Chris@0: } Chris@0: break; Chris@0: Chris@0: default: Chris@0: if (substr($param, 0, 2) == '--') { Chris@0: // ignore unknown options Chris@0: break; Chris@0: } Chris@0: else { Chris@0: // parse the URI Chris@0: $path = parse_url($param); Chris@0: Chris@0: // set site name Chris@0: if (isset($path['host'])) { Chris@0: $_SERVER['HTTP_HOST'] = $path['host']; Chris@0: } Chris@0: Chris@0: // set query string Chris@0: if (isset($path['query'])) { Chris@0: $_SERVER['QUERY_STRING'] = $path['query']; Chris@0: parse_str($path['query'], $_GET); Chris@0: $_REQUEST = $_GET; Chris@0: } Chris@0: Chris@0: // set file to execute or Drupal path (clean URLs enabled) Chris@0: if (isset($path['path']) && file_exists(substr($path['path'], 1))) { Chris@0: $_SERVER['PHP_SELF'] = $_SERVER['REQUEST_URI'] = $path['path']; Chris@0: $cmd = substr($path['path'], 1); Chris@0: } Chris@0: elseif (isset($path['path'])) { Chris@0: $_SERVER['SCRIPT_NAME'] = '/' . $cmd; Chris@0: $_SERVER['REQUEST_URI'] = $path['path']; Chris@0: } Chris@0: Chris@0: // display setup in verbose mode Chris@0: if ($_verbose_mode) { Chris@0: echo "Hostname set to: {$_SERVER['HTTP_HOST']}\n"; Chris@0: echo "Script name set to: {$cmd}\n"; Chris@0: echo "Path set to: {$path['path']}\n"; Chris@0: } Chris@0: } Chris@0: break; Chris@0: } Chris@0: } Chris@0: Chris@0: if (file_exists($cmd)) { Chris@0: include $cmd; Chris@0: } Chris@0: else { Chris@0: echo "\nERROR: {$cmd} not found.\n\n"; Chris@0: } Chris@0: exit();