sh:0:getcwd()失败:exec命令没有这样的文件或目录

时间:2015-06-16 11:11:54

标签: php linux bash

我有一个php服务器在后台使用Gearman服务器运行一些代码。 命令行php脚本在后台运行。在中间,有一个服务器(walker),它总是在运行并监听某些事件。当我听一些特定事件时,它会使用php exec(“some command”)激活另一个命令行命令。

如果此服务器正在运行,那么它可以正常工作,但几个小时后它开始提供:

 var initialize = function () {
    var language_router = new LanguageRouter(),
        parent_view = new ParentView(),
        list_collection = new LanguageCollection(),
        list_collection.fetch();
    language_router.on('route:defaultaction', function () {
        list_view = new LanguageListView({
            collection: list_collection,
            template: _.template(templates.languagelistsingle)
        });

    });

我们使用exec();

关于如何防止这种情况的任何想法?

1 个答案:

答案 0 :(得分:2)

此错误表示getcwd()返回NULLerrno设置为ENOENT

如果当前工作目录已取消关联,

getcwd()将返回ENOENT。这似乎就是这种情况(根据联机帮助页,这是导致getcwd()返回ENOENT)的唯一条件。

仔细检查以确保在服务器运行时没有人删除目录,或者服务器代码本身没有在当前工作目录上调用unlink()。有人在某处删除它。

作为一种好的做法,通常建议将守护进程chdir()发送到守护程序将执行其职责的已知目录。这正是为了避免这种问题(也是因为在单独的文件系统中运行的守护进程可能会阻止管理员卸载该文件系统)。