中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

若羌县| 宁乡县| 临沂市| 顺昌县| 芮城县| 盐源县| 渭南市| 通道| 当雄县| 大理市| 荆门市| 扶沟县| 西盟| 广东省| 丹凤县| 迁安市| 金塔县| 寿光市| 鹤峰县| 许昌市| 阳曲县| 二手房| 白沙| 丰台区| 梨树县| 双鸭山市| 潞西市| 贡嘎县| 浙江省| 安达市| 扎兰屯市| 盖州市| 河西区| 峨山| 汉川市| 海城市| 吉木乃县| 宁陵县| 玉环县| 赤水市| 宁国市|