2014-10-16 3 views
3

У меня есть веб-сайт, сделанный wordpress, и я сделал некоторые php-файлы, которые я хочу выполнить, и по какой-то причине мне нужно require_once (/ wp-includes/class-phpass .php), но я получил Ошибка открытия требуется ошибка, есть файл .htaccess в корневой папке и не существует в сор-включает в папке он Htaccess содержит следующее:как разрешить require_once() для php-файла в wordpress

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 

так, как решить эту проблему ?! Спасибо

Редактировать

мой WordPress установлен не в корневой папке это как корень/жить

+2

'require' - локальная процедура файловой системы и поэтому не передает правила .htaccess. –

+0

то почему я получил эту ошибку ?! –

+0

Возможно, проблема с файловыми дорожками. –

ответ

9

Предполагая, что это ваш буквальным код:

require_once('/wp-includes/class-phpass.php'); 

не удивительно, что файл не может быть найден, а require работает о n уровень файловой системы, поэтому вам, вероятно, понадобится что-то вроде /var/www/mysite/wp-includes/class-phpass.php.

Вы должны быть в состоянии получить его работу так:

require_once $_SERVER['DOCUMENT_ROOT'] . '/wp-includes/class-phpass.php'; 

Это вставляет текущий корневой путь веб-сайта до подпуть. $_SERVER['DOCUMENT_ROOT'] по умолчанию единственный видимый PHP имеет «корневой путь», если вы не научите его лучше.

+0

почти, кроме того, что wordpress не всегда установлен в document_root - у них есть функция get_home_path(), которая обычно используется, просто incase – Jonathan

+2

Да, я избегаю Wordpress, как чума, поэтому я не знаю всех своих пользовательских констант. Я прямо заявил, что «должен иметь возможность заставить его работать», потому что это, скорее всего, в корне. Вы все равно должны также, если доступно 'BASE_PATH' ** ** **, предпочитайте относительные пути на основе' __DIR__' вместо этого. Но я удалю этот ответ, поскольку ваш более полный для WP. –

+1

Я jsut отредактировал мой комментарий, кажется, что BASE_PATH больше не доступен, и http://codex.wordpress.org/Function_Reference/get_home_path - новый предпочтительный метод :( – Jonathan

0

Как уже говорилось в комментарии, требуется процедура файловой системы локальной - это не процесс правила htaccess.

Вы пытаетесь

require_once(/wp-includes/class-phpass.php); 

это ищет в корневом каталоге машины для/WP-включает/

Это будет работать, если ваш WordPress установлен в document_root (Burt не рекомендуемый способ):

require_once($_SERVER['DOCUMENT_ROOT'] . '/wp-includes/class-phpass.php'); 

Но вы должны использовать это:

$install_path = get_home_path(); 
require_once($install_path. '/wp-includes/class-phpass.php'); 

, как ссылаться на этой странице: старинной рукописи http://codex.wordpress.org/Function_Reference/get_home_path

Если вы делаете сценарии, которые нужны использовать WordPress ядра, но не выполняются из рамок самого WordPress, то вам нужно будет сделать следующее :

define('WP_USE_THEMES', false); 
global $wp, $wp_query, $wp_the_query, $wp_rewrite, $wp_did_header; 
require($_SERVER['DOCUMENT_ROOT'] . '/path/to/wp-load.php'); 

$install_path = get_home_path(); 
require_once($install_path. '/wp-includes/class-phpass.php'); 
+0

Неустранимая ошибка: вызов неопределенной функции get_home_path() –

+0

Я отредактировал свой ответ - вы можете включить дополнительную информацию в свой вопрос о включении ядра wordpress во внешний скрипт ... – Jonathan