【发布时间】:2013-01-24 05:05:13
【问题描述】:
我在远程服务器上工作,我无法使用控制台,因为 ssh 未启用。所以我需要直接从浏览器运行 aco_sync (或任何其他不涉及 shell 的方式)。
我设法将本地开发服务器上的 acos 与控制器/操作中的以下代码同步:
$command = ROOT . DS . APP_DIR . DS . 'Console' . DS . 'cake';
$params = ' -app ' . ROOT . DS . APP_DIR;
$params .= ' AclExtras.AclExtras';
$params .= ' aco_sync';
$result = shell_exec($command . $params);
但在生产服务器(使用 cPanel)上,大约 5 分钟没有响应,然后出现内部服务器错误 (500)。我只是挂了。实际上,这发生在两个带有 cPanel 的不同 VPS 服务器上。在第一个中,我有 ssh 并且能够从控制台运行命令。但是当从浏览器运行引用的代码时,我就像其他服务器一样挂起。
- 我在 php 日志文件和 cake 的日志文件中都没有发现任何记录错误。
- 该操作以“admin_”为前缀,如果未登录,ACL 不允许执行。 './cake' 脚本文件具有执行权限(我花了一段时间才意识到这是必要的)。
- 我在 Chrome 和 IE8 上试过。
- 调试级别设置为 1。
- 尝试运行脚本后,页面中断,我无法浏览,直到我打开隐身窗口或重新启动浏览器。
- 我认为,当我运行此脚本时,服务器的内存已完全耗尽。我不得不重新启动 httpd 以使站点在我可以控制的服务器上重新启动并运行。
我已经看到了一些使用 $dispatcher->dispatch() 的实现,并尝试了很多,但都没有成功。
有什么想法吗?
【问题讨论】:
标签: cakephp acl cakephp-2.2