簡體   English   中英

找不到命令:P​​HP exec()

[英]Command not found: PHP exec()

這真讓我抓狂。 我需要php執行一個命令來重啟節點中運行的腳本。 我正在使用一個名為forever的節點應用來運行所述腳本。 代碼如下:

<?php 
  echo '<pre>';
  echo exec('sudo -u dalton forever restart botti.js 2>&1');
  echo '</pre>';
?>

但是,當我運行它時,我得到sudo: forever: command not found

接下來,我嘗試which foreverwhich forever type forever ,這兩個給我:
forever: /usr/local/bin/forever

我編輯我的代碼:
echo exec('sudo -u dalton /usr/local/bin/forever restart botti.js 2>&1');

編輯:輸入錯誤后,錯誤現在是:
/usr/bin/env: node: No such file or directory

我的智慧結束了。 有任何想法嗎?

由於forever命令只運行,當你給出完整路徑時,我懷疑, /usr/local/bin不在你的PATH環境變量中,它包含所有目錄,默認情況下搜索可執行命令,用:分隔:我懷疑你在Linux上,可能與其他操作系統有所不同)

我懷疑forever調用/usr/bin/env node env的錯誤可能是由nodePATH之外引起的。

要在php中設置PATH,請使用putenv('PATH=<your path here>'); 例如,添加/usr/local/bin

putenv('PATH=' . getenv('PATH') . ':/usr/local/bin')

這也可能是一個sudo問題,嘗試-E (保護環境)切換。

弄清楚了,我還需要定義節點:

$asdf = system('sudo -E -u dalton /usr/local/bin/node /usr/local/bin/forever restart botti.js 2>&1');

永遠創建一個符號鏈接

ln -s /usr/local/bin/forever /usr/bin/env/forever

而對於nodejs,如果它仍然被稱為“nodejs”。 將其稱為“節點”

ln -s /usr/bin/nodejs /usr/bin/node

我將解決永遠執行問題。

對於php端,請嘗試使用此功能

echo shell_exec("your command sh");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM