Php 从shell_exec()执行symfony任务命令的权限被拒绝

Php 从shell_exec()执行symfony任务命令的权限被拒绝,php,shell,symfony1,permission-denied,Php,Shell,Symfony1,Permission Denied,我有一个symfony任务调用“doNothing”,我想通过执行shell_exec('/var/www/esm/symfony-php-symfony-doNothing')来执行它 通过调用我的symfony action apache错误,表示权限被拒绝 我想www-data用户没有权限我如何解决这个问题 编辑 error is sh:/var/www/esm/symfony:权限被拒绝您应该查看脚本所在的目录 使用ls-la显示文件夹中的所有文件及其权限(要执行php脚本文件,必须至

我有一个symfony任务调用“doNothing”,我想通过执行
shell_exec('/var/www/esm/symfony-php-symfony-doNothing')来执行它

通过调用我的symfony action

apache错误,表示权限被拒绝

我想
www-data
用户没有权限我如何解决这个问题

编辑

error is

sh:/var/www/esm/symfony:权限被拒绝

您应该查看脚本所在的目录

使用
ls-la
显示文件夹中的所有文件及其权限(要执行php脚本文件,必须至少为www数据或其组分配
x
位)

此外,所有父目录直到
/
都必须为用户/组分配
x
位,apache才能将目录更改为

看。您有树状结构的文件系统:

  • /var/www
    位于
    /var
  • /var/www/esm
    位于
    /var/www
  • /var/www/esm/symfony
    位于
    /var/www/esm
所以www数据用户应该能够执行(
x
bit)所有这些目录

因此,当在
/
中执行
ls-l
并查看
/var
是否具有www数据用户或其组的
x
位(drw
x
rw
x
--),并且它拥有此目录。当在
/var
中执行
ls-l
等等


您可以将每个目录的权限更改为777。但不要使用
-R
键。只需更改目录的权限。

检查symfony根目录中的
symfony
文件的权限(
/var/www/esm
)我仍然没有lucki检查apache错误日志找到sh:/var/www/esm/symfony:permission deniedi给sudo chown-R www数据/var/www/esm/symfony权限仍然没有lucki检查apache错误日志找到sh:/var/www/esm/symfony:permissiondeniedchown是不够的。检查所有文件是否可读、可写和可执行。要成为舒尔,您可以运行sudo chmod-R 777/var/www/esm/symfony。但在出于安全原因修复问题后,应删除未使用的权限。由于您的apache日志,www数据无法访问目录/var/www/esm/symfony。这意味着它无法执行此目录(或某些父目录)。检查x位检查所有父目录的E位。也许apache不能简单地将目录更改为/var