php调用Linux命令成功执行但函数不返回[已解决]
昨天实验室开发的网络存储系统遇到了一个的BUG。 【问题描述】 php通过exec函数调用Linux命令service smb restart(重启Samba服务),以前都是正常重启后exec函数立即返回状态码0,但昨天底层正常重启后exec函数却迟迟不返回,从而导致程序执行到这儿就卡住
昨天实验室开发的网络存储系统遇到了一个的BUG。
【问题描述】
php通过exec函数调用Linux命令"service smb restart"(重启Samba服务),以前都是正常重启后exec函数立即返回状态码0,但昨天底层正常重启后exec函数却迟迟不返回,从而导致程序执行到这儿就卡住了。
【解决思路】
(1)一开始我在想是什么导致samba服务无法正常重启,经过进一步的实验发现,通过我们的网络存储系统,samba服务关闭操作是可以正常执行的,但开启和重启操作都无法正常执行。另外,从底层Linux系统控制台上直接执行开启和重启服务的命令都是可以正常的执行并返回。所以基于以上实验现象,我猜想问题可能跟php和samba服务相关的权限有关。随后我查看了samba的配置文件、目录权限,以及与samba相关的用户权限管理工具openldap,都未发现明显问题(不排除有遗漏的地方)。
(2)后来,我就想到之前用过的expect脚本,可以监控一条命令执行的时间并在超时后强行终止。将samba服务重启命令用expect脚本封装并设置timeout后,单独运行该脚本是可以在指定的timeout后强行返回,但我们的网络存储系统执行该脚本时还是无法正常返回。
(3)最后,我就想到从exec函数本身入手,经调研,最终改用proc_open和proc_close函数(打开和关闭一个进程通道)来达到php异步执行Linux命令的目的,具体的php代码如下:proc_close(proc_open("service smb restart", $output, $ret));
到此,昨天的BUG算是绕过去了,但具体为什么会出现这个问题我还是不太明白,若是有朋友遇到过类似的状况也请交流一下经验~

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Deepseek est un puissant outil de recherche et d'analyse intelligent qui fournit deux méthodes d'accès: la version Web et le site officiel. La version Web est pratique et efficace et peut être utilisée sans installation; Que ce soit des individus ou des utilisateurs d'entreprise, ils peuvent facilement obtenir et analyser des données massives via Deepseek pour améliorer l'efficacité du travail, aider la prise de décision et promouvoir l'innovation.

Il existe de nombreuses façons d'installer Deepseek, notamment: Compiler à partir de Source (pour les développeurs expérimentés) en utilisant des packages précompilés (pour les utilisateurs de Windows) à l'aide de conteneurs Docker (pour le plus pratique, pas besoin de s'inquiéter de la compatibilité), quelle que soit la méthode que vous choisissez, veuillez lire Les documents officiels documentent soigneusement et les préparent pleinement à éviter des problèmes inutiles.

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Bitget est un échange de crypto-monnaie qui fournit une variété de services de trading, notamment le trading au comptant, le trading de contrats et les dérivés. Fondée en 2018, l'échange est basée à Singapour et s'engage à fournir aux utilisateurs une plate-forme de trading sûre et fiable. Bitget propose une variété de paires de trading, notamment BTC / USDT, ETH / USDT et XRP / USDT. De plus, l'échange a une réputation de sécurité et de liquidité et offre une variété de fonctionnalités telles que les types de commandes premium, le trading à effet de levier et le support client 24/7.

OUYI OKX, le premier échange mondial d'actifs numériques, a maintenant lancé un package d'installation officiel pour offrir une expérience de trading sûre et pratique. Le package d'installation OKX de OUYI n'a pas besoin d'être accessible via un navigateur. Le processus d'installation est simple et facile à comprendre.
