Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.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
exec命令在终端中工作,不与PHP一起工作_Php_Exec - Fatal编程技术网

exec命令在终端中工作,不与PHP一起工作

exec命令在终端中工作,不与PHP一起工作,php,exec,Php,Exec,我正在编写一个类,它允许我通过PHP访问recutils 我在../database/中有一个名为books.rec的“数据库”文件和一个运行Recutils.php类的脚本 我的类只是使用正确的参数启动系统应用程序 但是,当我尝试将recins与PHP的exec函数一起使用时,该命令将无法在命令行中工作 这是由我的脚本执行的命令: recins-f Title-v Moi-f Author-v Moche-f Location-v loaned-t Books../database/Books

我正在编写一个类,它允许我通过PHP访问recutils

我在../database/中有一个名为books.rec的“数据库”文件和一个运行Recutils.php类的脚本

我的类只是使用正确的参数启动系统应用程序

但是,当我尝试将recins与PHP的exec函数一起使用时,该命令将无法在命令行中工作

这是由我的脚本执行的命令:

recins-f Title-v Moi-f Author-v Moche-f Location-v loaned-t Books../database/Books.rec

使用PHP:Nothing时,不会插入记录,也不会出现任何错误消息。 在终端中:好的,命令执行得很好,并且插入了我的记录

我也有一个方法来做一个选择操作使用recsel和它的工作非常好,它将使用完全相同的文件,并从exec运行太多

那么,有人能解释一下为什么这个命令不起作用吗

谢谢

PS:更多信息:

PHP是否可以访问recins命令?指向books.rec的路径是否正确?
尝试使用绝对路径。

我会再次检查您是否以同一用户的身份从命令行和php脚本运行该命令。这可能就是问题所在。执行官“whoami”

你说你有一个启动php脚本的脚本,它应该是同一个用户

您可能还想先运行一个更简单的exec命令,看看这是否可行

其他尝试事项:

尝试检查stderr输出exec'ls/tmp 2>&1',$out;这将把标准错误重定向到标准输出,这样您就可以同时获得这两个错误。 尝试使用php的shell_exec调用shell,就像从命令行eg运行一样。猛击shell_exec'ls/tmp 2>&1>/tmp/log'甚至应该将所有输出放入日志文件中。 我不认为这会对你有帮助,但如果其他方法都失败了,那就尝试一下,将其设置为后台进程,看看是否完成。exec'nohup php process.php>process.out 2>process.err祝您好运

www数据是否有权运行命令行实用程序?是否尝试使用exec second参数获取输出?exec将只返回最后一行。请注意../database/books.rec将与您的php相关script@tandu3:是的,www数据有权限,因为我使用recsel在同一脚本中执行相同的操作,并且它工作得非常完美@是的,我使用第二个参数,它是空的。books.rec是可访问的,因为我在同一个脚本中完美地使用了它。是的recins作为recsel位于我的$PATH中,如果假设我可以运行recsel,我可以在相同的时间以相同的方式运行recins。是的,path to books.rec是正确的,我在同一个脚本中使用它,非常感谢!使用shell_exec'ls/tmp 2>&1>/tmp/log'我可以看到其他方法拒绝了权限,但仍然没有任何返回字符串。事实上,我完全忘记了在我的项目上进行更改。项目位于~/www,而不是/var/www。威尔:我能够阅读我的文件,但我不明白我无法写入。事实上,这并不是执行文书的问题,而是文书权利的问题。