我有一个在本地运行的命令行测试脚本,但是当我尝试通过ssl(使用Putty)在我的主机(Bluehost)上运行它时,它会失败,但不会抛出错误。
我已经检查了错误日志,没有任何迹象表明失败,我在那里打开了E_ALL错误。
在我的本地wamp服务器上运行正常并输出所有提示:
1. environment imported
2. About to execute!
3. Got instance
4. Success
5. Finished executing!
当我在我的主机上用腻子运行时,它只输出前两行。 1.环境进口 2.即将执行!
这是脚本(joomla 3.4.5):
<?php
// Initialize Joomla framework
const _JEXEC = 1;
error_reporting(E_ALL);
// Load system defines
if (file_exists(dirname(__DIR__) . '/defines.php'))
{
require_once dirname(__DIR__) . '/defines.php';
}
if (!defined('_JDEFINES'))
{
define('JPATH_BASE', dirname(__DIR__));
require_once JPATH_BASE . '/includes/defines.php';
}
// Get the framework.
require_once JPATH_LIBRARIES . '/import.legacy.php';
// Bootstrap the CMS libraries.
require_once JPATH_LIBRARIES . '/cms.php';
// Load the configuration
require_once JPATH_CONFIGURATION . '/configuration.php';
require_once JPATH_BASE . '/includes/framework.php';
echo "1. Environment imported\n";
class Test extends JApplicationCli
{
public function doExecute()
{
echo "4. Successful execution\n";
}
}
echo "2. About to execute\n";
$test = JApplicationCli::getInstance('Test');
echo "3. Got instance\n";
$test->execute();
echo "5. Finished executing!\n";
?>
我尝试使用命令行的不同变体运行它:
php jwjtest.php
php54s -c ~/public_html/php.ini ~/public_html/cli/jwjtest.php
我还包围了使用'try'和'catch'执行'getInstance'的行,但没有捕获到错误。
欢迎任何帮助。谢谢!
答案 0 :(得分:0)
原来,从命令行我必须使用PHP的命令行版本。在蓝色主机上你必须通过使用php54-cli启动它(php-cli不起作用)..所以例如我的测试用例我跑了
php54-cli jwjtest.php
一切正常。
我不确定为什么只使用php作为命令不起作用(也许它运行错误版本的PHP?)但至少我现在有解决方案。 我从jo1la.stackexchange来自user1104799的回复中找到了正确的轨道