解决禁用的shell_exec()

时间:2015-03-09 11:18:16

标签: php magento controller dispatcher

我有以下几行:

在etc / modules / Becker_Tecdoc.xml中激活模块

<?xml version="1.0"?>
<config>
 <modules>
    <Becker_Tecdoc>
        <active>true</active>
        <codePool>local</codePool>
    </Becker_Tecdoc>
 </modules>
</config>

贝克尔/ TECDOC的/ etc / config.xml中

<?xml version="1.0"?>
<config>
        <modules>
            <Becker_Tecdoc>
                <version>1.0.0</version>
            </Becker_Tecdoc>
        </modules>
    <frontend>
        <routers>
            <tecdoc>
                <use>Standard</use>
                <args>
                    <module>Becker_Tecdoc</module>
                    <frontName>tecdoc</frontName>
                </args>
            </tecdoc>
        </routers>
    </frontend>
</config>

贝克尔/ TECDOC /控制器/ IndexController.php

<?php
class Becker_Tecdoc_IndexController extends Mage_Core_Controller_Front_Action {
    public function indexAction(){
        die();
    }
 }
?>

当我在浏览器中调用时: http://auto-complet.ro/shop/tecdoc/index/index 要么 http://auto-complet.ro/shop/index.php/tecdoc/index/index

我收到404错误...

我的system.log显示此错误:

ERR (3): Warning: shell_exec() has been disabled for security reasons  
in /home/autoco/public_html/shop/cron.php on line 65

我的提供商并不想取消阻止shell_exec ...

我该如何解决这个问题?

我的magento是社区1.9。

1 个答案:

答案 0 :(得分:0)

system.log中的错误与您的控制器404无关。您需要解决一些大写问题。

  • 文件夹app/code/local/becker/tecdoc应为app/code/local/Becker/Tecdoc
  • 您的控制器的使用声明<use>Standard</use>应为<use>standard</use>

system.log中的错误来自cron.php,在加载控制器时无法使用。{1}}。你不应该看到这个错误,因为Magento在尝试执行它之前检查shell_exec是否被禁用

$disabledFuncs = explode(',', ini_get('disable_functions'));
$isShellDisabled = is_array($disabledFuncs) ? in_array('shell_exec', $disabledFuncs) : true;

// later

} else if (!$isShellDisabled) {
    $fileName = basename(__FILE__);
    $baseDir = dirname(__FILE__);
    shell_exec("/bin/sh $baseDir/cron.sh $fileName -mdefault 1 > /dev/null 2>&1 &");
    shell_exec("/bin/sh $baseDir/cron.sh $fileName -malways 1 > /dev/null 2>&1 &");
    exit;
}

// later still

if ($isShellDisabled) {
    Mage::dispatchEvent('always');
    Mage::dispatchEvent('default');
}

如果检测到问题,您可能需要尝试手动将$isShellDisabled设置为true