1

我有一个 cron 任务设置来运行以下命令:

php /var/www/vhosts/examplesite.com/index.php cron processCategoryItemCount

当我在我的生产服务器(通过 MediaTemple dv4 托管)上运行它时,ssh 窗口上会闪烁以下错误:

您的系统文件夹路径似乎设置不正确。请打开以下文件并更正:index.php

当我在我的开发 Mac 上运行 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_pathapplication_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));
}
4

7 回答 7

4

我只想写评论,但我不能....我是新来的,我没有选项对这个问题添加评论。

好吧... 1 年前,我的专用服务器遇到了同样的问题。

解决方案是将 $system_path 留空...

$system_path = '';

你可以试试这个:

$system_path = './system';
于 2012-05-17T05:14:50.723 回答
3

问题与权限有关。我从来没有想过这一点,但是当我从 github 拉出时,如果我以 root 身份登录,显然所有权是root. 结果 php 无法正常执行。

我跑了:chown exampleuser:psacln index.php现在一切都好!

因此,作为遇到此问题的其他人的教训..如果您遇到同样的问题,请确保所有权和文件权限是正确的!

于 2012-05-17T14:14:22.853 回答
3

另一个更好的解决方案是使用dirname() 之类的,

更改以下 2 行

$system_path = 'system';
$application_folder = 'application';

经过

$system_path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'system';
$application_folder = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'application';
于 2014-12-05T11:12:06.440 回答
0
/*
 *---------------------------------------------------------------
 * 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';

如果不工作,你可以试试这个兄弟添加另一个../

如果路径设置正确,错误报告肯定不会这么说:)

只是帮助^_^希望这会

于 2012-05-17T05:03:28.457 回答
0

您确定在 FTP 传输中没有任何问题吗?ie系统其实和index.php在同一个目录?

另外,你确定你是从正确的地方调用 php 吗?路径对吗?

我最近遇到了这个问题:CodeIgniter + Command Line + Cron + Cpanel

尝试运行它:

/usr/local/bin/php your/path/to/index.php <controller> <method>

对于路径,它可能应该是完整路径?不是 www.example.com/index.php?即我的是这样的:

/usr/local/bin/php /home/account_name/public_html/index.php <controller> <method> /dev/null 2>&1
于 2012-05-17T10:11:50.380 回答
0

在 index.php 中

我已经做出了这些改变并为我工作。

$system_path = '../system/';

$application_folder = '../application/';
于 2014-10-17T10:03:39.530 回答
0

要将所有目录更改为 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 分布式 plz!

于 2015-07-09T08:06:32.063 回答