直接给php文件加执行权限即可运行,但通常用php script.php方式执行;因linux默认不赋予脚本执行权限,./script.php会因缺少x位报“permission denied”错误。

直接给文件加执行权限即可运行,但多数情况下你并不需要这么做——PHP 文件通常用 php filename.php 方式解释执行,而非当作可执行程序直接运行。
为什么 ./script.php 会报权限错误
Linux 默认不赋予脚本执行权限,即使它有 #!/usr/bin/env php 头。系统看到 ./ 就尝试以当前用户身份直接执行该文件,而该文件缺少 x(execute)位。
- 错误典型提示:
Permission denied或bash: ./script.php: Permission denied - 本质不是 PHP 问题,是 Linux 文件权限机制在起作用
- 即使文件内容完全合法,没权限照样无法
./运行
两种正确运行方式及对应权限需求
你有两条路可走,选哪条取决于使用场景:
- 推荐方式:用
php命令显式调用 ——php script.php,此时只需读权限(r),无需x - 替代方式:加执行权限后直接运行 —— 先
chmod +x script.php,再./script.php;要求文件同时具备r和x - 注意:如果脚本开头有 shebang(如
#!/usr/bin/env php),必须确保该路径下php存在且可访问,否则仍会失败
chmod 设置权限的实用要点
别盲目 chmod 777,最小必要权限更安全:
立即学习“PHP免费学习笔记(深入)”;
- 仅自己可执行:
chmod u+x script.php - 自己读+执行,组和其他人只读:
chmod 744 script.php - 确认结果用:
ls -l script.php,看到最左列有-rwxr--r--类似结构才算成功 - 批量处理?慎用
chmod -R +x *.php—— PHP Web 脚本放 webroot 下被直接加执行权限可能引发安全风险
真正容易被忽略的是:很多 PHP 脚本压根就不该被 ./ 执行,尤其是带 Web 上下文(如依赖 $_SERVER)或数据库配置的,强行加 x 权限运行反而导致逻辑异常。先想清楚你到底要“运行脚本”还是“调试代码”,再决定要不要动权限。











