我有一个简单的测试用例设置,如下所示:
exec('/path/to/bash/script', $output, $return);
该段代码成功启动了 bash 脚本,其中包含以下内容:
#!/usr/bin/env bash
exec php -q /path/to/php/script.php
这就是失败的地方。 PHP 脚本永远不会执行,浏览器只是一直等待响应,直到几分钟后出现 500 错误。
它尝试运行的 PHP 脚本只有一行:
#!/usr/bin/php -q
<?php
file_put_contents('/path/to/folder/output.txt', 'some text');
?>
一些值得注意的事情:
- 如果我通过 CLI 运行 Bash 脚本,则会运行 PHP 代码。
- 在本地服务器上一切正常,通过 OS X 上的 XAMPP 安装
- 问题出在远程服务器上。安装了 WHM/cPanel 的 CentOS。
- 上述文件拥有 777 权限。
- 我无法从 exec() 函数的返回值中获得任何线索,因为脚本在“挂起”几分钟后以 500 错误结束。
有什么想法吗?
最佳答案
感谢 Marc B 找到了解决方案。问题出在 PHP bin 的路径上。尽管/usr/bin/php 路径存在并且 php 变量已在环境中设置,但我需要将两者更改为/usr/local/bin/php。这是我使用 PHP_BINDIR 常量找到的正确路径。
关于php - 无法通过 Bash 脚本执行 PHP 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22560526/