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

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

sh: 0: getcwd() failed: No such file or directory

我们在哪里使用exec();

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

最佳答案

此错误表明getcwd()返回了NULL设置为errnoENOENT

如果当前工作目录未链接,则getcwd()将返回ENOENT。似乎是这种情况(根据联机帮助页,这是导致getcwd()返回ENOENT的唯一条件)。

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

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

关于php - sh : 0: getcwd() failed: No such file or directory from exec command,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30865973/

10-13 08:37