Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过命令行执行用ZendGuard编码的PHP脚本_Php_Apache_Zend Guard - Fatal编程技术网

通过命令行执行用ZendGuard编码的PHP脚本

通过命令行执行用ZendGuard编码的PHP脚本,php,apache,zend-guard,Php,Apache,Zend Guard,我需要从命令行(PHPCLI)运行一些由Zend Guard加密的文件,PHP似乎在到达一个编码文件时立即退出,没有任何错误消息。可以从命令行执行Zend Guard编码的PHP脚本吗 更多详细信息 在我目前正在处理的应用程序中,有些任务需要定期运行。首先,我们为一些仅用于运行任务的URL实现了控制器。然后我们将在这些页面上使用wget执行cron作业。问题是其中一些任务需要参数才能运行。使用wget执行POST请求不起作用,因为Zend Guard所做的第一件事是分配一个cookie,然后重定

我需要从命令行(PHPCLI)运行一些由Zend Guard加密的文件,PHP似乎在到达一个编码文件时立即退出,没有任何错误消息。可以从命令行执行Zend Guard编码的PHP脚本吗

更多详细信息

在我目前正在处理的应用程序中,有些任务需要定期运行。首先,我们为一些仅用于运行任务的URL实现了控制器。然后我们将在这些页面上使用
wget
执行cron作业。问题是其中一些任务需要参数才能运行。使用
wget
执行POST请求不起作用,因为Zend Guard所做的第一件事是分配一个cookie,然后重定向到同一URL。在第二个请求中,由于它现在处于GET中,所有参数都丢失了

然后,我们决定使用命令行脚本来纠正这个问题。我们非常喜欢这种方法,因为它解决了我们在基于URL的方法中遇到的问题。首先,它不会在很长一段时间内保持开放的Apache连接。此外,它不会公开公共URL上的某些内部逻辑。如前所述,当我们尝试执行这些命令行脚本时,什么都没有发生,应用程序只是退出

我们使用的是Ubuntu12.04LTS、PHP5.4.25和Apache2.2.22。我确保Zend Guard扩展已正确加载到命令行中。此外,当网页被web浏览器访问时,它也能正常工作


如果有人能帮我解决这个问题,我将不胜感激。谢谢大家!

我将在这里做一个假设。当你们将脚本从命令行移动到运行时,实际上并没有重新编写脚本。您只需在文件上执行php-f,而不是在URL上执行wget

如果是这种情况,您可能在脚本中有一些需要身份验证的逻辑,或者如果找不到参数,则具有exit/die的web服务器逻辑。您提到有些脚本需要POST来运行,所以我猜那里有一个$\u POST,显然无法在命令行上运行

不过只是猜测而已


编辑:只需阅读您所说的通过URL访问时有效的部分。几乎可以肯定是一个$\u POST或类似的东西。

您应该在
php
脚本中,将您想要从命令行运行的任何逻辑封装在

$cli = isset($_ENV['SSH_CLIENT']);
if($cli) {
  // Code to run from command line here

} else {
  // Code for the Web here


}

这将允许您从web和命令行运行相同的文件。正如前面提到的
tazer84
一样——确保在CLI模式下,不包括纯Web逻辑(例如
头('location:…');
$\u COOKIE
$\u POST
等),反之亦然。

日志中是否有关于失败的信息?您是否尝试过提高日志级别?您的zend guard模块包括在哪里?你能详细介绍一下在哪些目录中启用了zend guard模块的方式和文件吗?写一个小的PHP脚本怎么样?首先
curl
打开连接,获取cookie并重定向。第二个
curl
执行POST请求并发送cookie。没有第二种方法的优点,但我认为它会起作用。