У меня есть задача установки cron для запуска следующего:
php /var/www/vhosts/examplesite.com/index.php cron processCategoryItemCount
Когда я запускаю это на моем рабочем сервере (размещенном через MediaTemple dv4), в окне ssh появляется следующее сообщение:
Возможно, ваш путь к системной папке установлен правильно. Откройте следующий файл и исправьте это: index.php
Когда я запускаю команду php CLI на моем маке разработки, я вообще не получаю никаких ошибок.
Насколько я могу сказать, мой system_path установлен правильно .. вот фрагмент.
/* *--------------------------------------------------------------- * SYSTEM FOLDER NAME *--------------------------------------------------------------- * * This variable must contain the name of your "system" folder. * Include the path if the folder is not in the same directory * as this file. * */ $system_path = 'system';
Я провел некоторое тестирование, чтобы пройти через код, который использует CI для определения system_path
и application_path
. Из того, что я могу сказать, что он работает правильно ..
CodeIgniter использует следующий код. Для проверки пути
// Set the current directory correctly for CLI requests if (defined('STDIN')) { chdir(dirname(__FILE__)); } if (realpath($system_path) !== FALSE) { $system_path = realpath($system_path).'/'; } // ensure there's a trailing slash $system_path = rtrim($system_path, '/').'/'; // Is the system path correct? if ( ! is_dir($system_path)) { exit("Your system folder path does not appear to be set correctly. Please open the following file and correct this: ".pathinfo(__FILE__, PATHINFO_BASENAME)); }
В результате я сделал файл test.php и застрял в httproot ..
<?php $system_path = 'system'; echo "index.php dir is: ".dirname(__FILE__)."\n"; chdir(dirname(__FILE__)); echo "System Dir is: ".realpath($system_path)."\n"; if ( ! is_dir($system_path)){ exit("Your system folder path does not appear to be set correctly. Please open the following file and correct this: ".pathinfo(__FILE__, PATHINFO_BASENAME)); }else{ echo "System Path Set Properly\n"; } sleep(30);
Я выполнил это через командную строку с помощью этой команды:
/usr/bin/php /var/www/vhosts/examplesite.com/client/stage/test.php`
index.php dir is: /var/www/vhosts/examplesite.com/client/stage System Dir is: /var/www/vhosts/examplesite.com/client/stage/system System Path Set Properly
if ( ! is_dir($system_path)) { exit("Your system folder path does not appear to be set correctly. Please open the following file and correct this: ".pathinfo(__FILE__, PATHINFO_BASENAME)); }
Я хотел бы написать только комментарий, но я не мог …. Я новичок здесь, и у меня нет возможности добавить комментарий к вопросу.
Ну … У меня была такая же проблема 1 год назад с моим выделенным сервером.
Решение заключалось в том, чтобы оставить $ system_path пустым …
$system_path = '';
вы можете попробовать это вместо этого:
$system_path = './system';
Проблема связана с разрешениями. Я никогда не думал об этом, но, вытаскивая из github, если я зарегистрировал его как root, очевидно, что это root
. В результате php не может выполнить должным образом.
Я побежал: chown exampleuser:psacln index.php
и все хорошо сейчас!
Итак, как урок для других, сталкивающихся с этой проблемой .. если вы получаете ту же проблему, убедитесь, что права на право собственности и права прав правильные!
Еще одно лучшее решение – использовать dirname (), например,
Измените ниже 2 строки
$system_path = 'system'; $application_folder = 'application';
От
$system_path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'system'; $application_folder = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'application';
/* *--------------------------------------------------------------- * SYSTEM FOLDER NAME *--------------------------------------------------------------- * * This variable must contain the name of your "system" folder. * Include the path if the folder is not in the same directory * as this file. * */ $system_path = '../system'; /* *--------------------------------------------------------------- * APPLICATION FOLDER NAME *--------------------------------------------------------------- * * If you want this front controller to use a different "application" * folder then the default one you can set its name here. The folder * can also be renamed or relocated anywhere on your server. If * you do, use a full server path. For more info please see the user guide: * http://codeigniter.com/user_guide/general/managing_apps.html * * NO TRAILING SLASH! * */ $application_folder = '../application';
вы можете попробовать этот брат, если не работаете, добавьте еще один ./
определенно сообщение об ошибке не скажет, что если путь задан правильно 🙂
просто помогая ^ _ ^ надеюсь, что это будет
Вы уверены, что в FTP-передаче ничего не получилось? т.е. система фактически находится в том же каталоге, что и index.php?
Кроме того, вы уверены, что вызываете php с нужного места? и путь правильный?
Недавно у меня была эта проблема: CodeIgniter + Command Line + Cron + Cpanel
Попробуйте запустить его:
/usr/local/bin/php your/path/to/index.php <controller> <method>
Для пути это, вероятно, должен быть полный путь? а не http://www.example.com/index.php? т.е. мой – это что-то вроде:
/usr/local/bin/php /home/account_name/public_html/index.php <controller> <method> /dev/null 2>&1
В index.php
Я внес эти изменения и работал на меня.
$system_path = '../system/'; $application_folder = '../application/';
Чтобы изменить все каталоги на 755 (-rwxr-xr-x):
find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
Чтобы изменить все файлы на 644 (-rw-r-r–):
find /opt/lampp/htdocs -type f -exec chmod 644 {} \;
Исправьте codeigniter 3.0.0 distributive plz!