我的php脚本找不到'Smarty.class.php'

问题描述 投票:0回答:1

我已经通过 Composer 在我的 Linux Web 服务器上安装了 smarty,但是当我运行我的 php 测试脚本时,我得到:

致命错误:未捕获错误:在 /var/www/html/smarty_test.php 中找不到类“Smarty”:5 堆栈跟踪:#0 {main} 在第 5 行 /var/www/html/smarty_test.php 中抛出

Composer 将 Smarty.class.php 放在 /var/www/html/vendor/smarty/smarty/libs/ 中,我的 composer.json 是在 /var/www/html 中创建的,这也是其中的位置我的剧本是。

smarty_test.php

<?php

require_once 'vendor/autoload.php';

$smarty = new Smarty();

echo "Hello world";
echo "Smarty version: " . Smarty::SMARTY_VERSION;

?>

composer.json

{
    "require": {
        "smarty/smarty": "^5.4"
    }
}

Smarty.class.php

<?php

define('__SMARTY_DIR', __DIR__ . '/../src/');

// Global function declarations
require_once(__SMARTY_DIR . "/functions.php");

spl_autoload_register(function ($class) {
        // Class prefix
        $prefix = 'Smarty\\';

        // Does the class use the namespace prefix?
        $len = strlen($prefix);
        if (strncmp($prefix, $class, $len) !== 0) {
                // If not, move to the next registered autoloader
                return;
        }

        // Hack off the prefix part
        $relative_class = substr($class, $len);

        // Build a path to the include file
        $file = __SMARTY_DIR . str_replace('\\', '/', $relative_class) . '.php';

        // If the file exists, require it
        if (file_exists($file)) {
                require_once($file);
        }
});
php apache composer-php smarty
1个回答
0
投票

正如亚历克斯已经评论过的那样, 您需要明确指定要实例化的类:

像这样:new \Smarty\Smarty()

<?php

require_once 'vendor/autoload.php';

$smarty = new \Smarty\Smarty();

echo "Hello world";
echo "Smarty version: " . Smarty::SMARTY_VERSION;

或者像这样:

<?php
use \Smarty\Smarty;
require_once 'vendor/autoload.php';

$smarty = new Smarty();

echo "Hello world";
echo "Smarty version: " . Smarty::SMARTY_VERSION;
© www.soinside.com 2019 - 2024. All rights reserved.