91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

exec php執行不了的解決方法

發布時間:2021-03-01 10:21:06 來源:億速云 閱讀:518 作者:清風 欄目:編程語言

本文將為大家詳細介紹“exec php執行不了的解決方法”,內容步驟清晰詳細,細節處理妥當,而小編每天都會更新不同的知識點,希望這篇“exec php執行不了的解決方法”能夠給你意想不到的收獲,請大家跟著小編的思路慢慢深入,具體內容如下,一起去收獲新知識吧。

php有什么用

php是一個嵌套的縮寫名稱,是英文超級文本預處理語言,它的語法混合了C、Java、Perl以及php自創新的語法,主要用來做網站開發,許多小型網站都用php開發,因為php是開源的,從而使得php經久不衰。

exec php執行不了的解決辦法:1、修改yii文件首行,直接指明php解釋器;2、修改exec調用方法,直接指明php解釋器。

php exec 為何執行不了?

緣起

有一個定時任務,想在 OSS 后臺管理頁面可以點擊啟動,可是試了幾種方法都不行;無論 system 還是 exec(手工在 shell command line 執行沒問題);最初懷疑 Web Server nginx 用戶的權限問題,后來發現是環境變量找不到 php 可執行文件(因為 nginx 用戶是受限用戶);

問題定位
exec("/home/app/example/api/app/yii demand/virtual {$id}", $output);
print_r($output);

以上腳本執行后僅輸出 Array(),顯然是沒有執行到業務代碼(業務代碼的第一行就有輸出);

// http://oss.example.com/index.php?r=demand/demand-ip/msg&id=1929 點擊后執行
exec("/home/app/example/api/app/yii demand/virtual {$id} 2>&1", $output);
print_r($output);

以上腳本執行后有錯誤輸出:Array ( [0] => /usr/bin/env: php: No such file or directory );

/usr/bin/env: php 這句話出自 yii 文件的首行 #!/usr/bin/env php,本意是用于指明執行 yii 文件的 php 腳本解釋器在哪里;可是錯誤輸出/usr/bin/env: php: No such file or directory 說明找不到 php 在哪里;

解決方案
  • 方案一:修改 yii 文件首行,直接指明 php 解釋器;
    由 #!/usr/bin/env php 修改為#!/usr/local/bin/php,即直接指明 php 解釋器所在位置(在代碼發布時修改也可以);

  • 方案二:修改 exec 調用方法,直接指明 php 解釋器

exec("/usr/local/bin/php /home/app/example/api/app/yii demand/virtual {$id} 2>&1", $output);
print_r($output);
  • 注意:在實際執行中,exec 命令還有點問題,見下文 “504 錯誤”;

504 錯誤
  • 當 exec 時間執行過長時(如超過 60 秒),頁面上會出現 504 錯誤(Gateway Timeout);

  • 需要將標準輸出、標準錯誤重定向,然后就會在 后臺進程執行命令,頁面上會輸出處理進程號;

$cmd = '/usr/local/bin/php /home/app/example/yapp/yii demand/finish 2057';
$pid_file = 'msgrepeat.pid';
$exec_cmd = sprintf("%s > /dev/null 2>&1 & echo $! > %s & cat %s", $cmd, $pid_file, $pid_file);
exec($exec_cmd);
關于 /usr/bin/env(可移植性高?)
  • Why is it better to use “#!/usr/bin/env NAME” instead of “#!/path/to/NAME” as my shebang?

  • How does /usr/bin/env know which program to use?

nginx 用戶

為安全起見,通常設置 nginx 用戶的 shell 為 /sbin/nologin

定時任務和 Web 操作的關系?

定時任務和 OSS 后臺管理頁面上的點擊操作之間的關系處理的一直不太好;

  1. yii 框架 console 和 web 的兩種處理方式;
    如何提升 crontab 可測試性的問題;
    如何改善 crontab 使用體驗的問題;
    如何合理復用 crontab 任務和 API(Controller/Action)代碼的問題;

  2. 前臺和后臺共享 Controller/Action 的方式;
    或者說多項目之間方便共享代碼庫的問題;

啟示
  • php-fpm does not work exec, system, shell_exec, only CLI;

  • PHP exec() does not run all commands;

如果你能讀到這里,小編希望你對“exec php執行不了的解決方法”這一關鍵問題有了從實踐層面最深刻的體會,具體使用情況還需要大家自己動手實踐使用過才能領會,如果想閱讀更多相關內容的文章,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

栾川县| 新竹市| 班玛县| 墨江| 独山县| 富源县| 洞头县| 牡丹江市| 双城市| 基隆市| 台湾省| 阿拉善左旗| 平原县| 富蕴县| 阳信县| 绵阳市| 太和县| 临潭县| 南通市| 淄博市| 东莞市| 东兴市| 东乌| 贵德县| 保亭| 义乌市| 巨鹿县| 玛多县| 勐海县| 中江县| 五台县| 绥德县| 陆河县| 怀远县| 北宁市| 平罗县| 措勤县| 利津县| 荔波县| 全南县| 西吉县|