Heim  >  Artikel  >  Backend-Entwicklung  >  exec - php系统函数可以调用简单命令,无法执行octave脚本?

exec - php系统函数可以调用简单命令,无法执行octave脚本?

WBOY
WBOYOriginal
2016-08-29 08:50:491100Durchsuche

问题描述:

octave是一个兼容matlab语法的GNU开源科学计算软件。我写了一段octave脚本,在开头指定octave为解释器#!/usr/bin/octave
在命令行下直接执行这段脚本,是可以生成我想要的图片的。即使用 ./octavedemo.m arg1 arg2...

而现在我想用php的系统函数比如shell_exec()去执行这段命令,却不能生效。
为了测试是不是权限问题,我试着用shell_exec()执行了简单的ls -l等命令,是可以成功的:

<code>$test = shell_exec("ls -l");
echo $test;</code>

js是可以接收到并在控制台打印出结果的,所以应该不是系统函数执行权限的问题。

所以想问问还可能是什么样的情况导致的?
生成图片比较慢所以耗时太长吗?我已经在php.ini里面把max_excution_time设为600了,应该够了吧;
还是说图片太大了,不像简单的文本,生成不了这么大的?

如果能提供一些经验,就非常感谢了!

更新(已解决):

原先我是在apache的默认html目录下,新建了个demonstrate目录,然后把php等文件放在这个目录里面了,然后我只是进入了这个目录,对里面的所有文件进行了chmod 777操作。
现在试着对demonstrate目录也赋予了777权限,然后问题就解决了。应该是不对这个目录赋予读写权限,就不能在里面生成文件的原因。
事实证明,还是要多想清楚每一步的逻辑才能不浪费时间,感谢回答的人!

回复内容:

问题描述:

octave是一个兼容matlab语法的GNU开源科学计算软件。我写了一段octave脚本,在开头指定octave为解释器#!/usr/bin/octave
在命令行下直接执行这段脚本,是可以生成我想要的图片的。即使用 ./octavedemo.m arg1 arg2...

而现在我想用php的系统函数比如shell_exec()去执行这段命令,却不能生效。
为了测试是不是权限问题,我试着用shell_exec()执行了简单的ls -l等命令,是可以成功的:

<code>$test = shell_exec("ls -l");
echo $test;</code>

js是可以接收到并在控制台打印出结果的,所以应该不是系统函数执行权限的问题。

所以想问问还可能是什么样的情况导致的?
生成图片比较慢所以耗时太长吗?我已经在php.ini里面把max_excution_time设为600了,应该够了吧;
还是说图片太大了,不像简单的文本,生成不了这么大的?

如果能提供一些经验,就非常感谢了!

更新(已解决):

原先我是在apache的默认html目录下,新建了个demonstrate目录,然后把php等文件放在这个目录里面了,然后我只是进入了这个目录,对里面的所有文件进行了chmod 777操作。
现在试着对demonstrate目录也赋予了777权限,然后问题就解决了。应该是不对这个目录赋予读写权限,就不能在里面生成文件的原因。
事实证明,还是要多想清楚每一步的逻辑才能不浪费时间,感谢回答的人!

php的shell_exec这个方法采用的是web的用户权限~确定下你的那个脚本,web用户有执行权限吗?

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn