php - 无法通过 Bash 脚本执行 PHP 脚本

标签 php linux bash

我有一个简单的测试用例设置,如下所示:

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/

相关文章:

linux - 在 bash 中不中断地读取用户输入

python - 获取与模式不匹配的模式之前的行

php - 在 Woocommerce 订单销售报告中包含自定义订单状态

php - 如何在 PHP 中返回正则表达式匹配,而不是替换

php - 将连字符替换为空格,但空格连字符不应替换为空格

linux - iptables:只允许 OUTPUT 用于 http 和 ssh

linux - 如何在unix中使用awk命令添加?

linux - 如何编写一个 shell 脚本来计算给定文件夹中所有文件的所有行数?

linux - Vagrant 规定将 PATH 变量写入 .profile

php - 如何使用 php 和 javascript 为特定结果显示正确的图像?