簡體   English   中英

如何以bash在php CLI中關閉字符串或抑制錯誤輸出的方式?

[英]How to close a string the way that bash does in php CLI or suppress error output?

如果您使用以下代碼創建一個簡單的php腳本:

shell_exec('"');

並運行:

php myscript.php

它在Mac上的bash中給出以下錯誤:

sh: -c: line 0: unexpected EOF while looking for matching `"'
sh: -c: line 1: syntax error: unexpected end of file

我已經嘗試了所有我能想到的:

ob_start();
@shell_exec('"');
ob_end_clean();

@shell_exec('" 2> /dev/null');

但是,無論我嘗試什么,我都無法抑制此消息。 問題是我正在創建一個單元測試以對通用工具進行壓力測試$ argc,$ argv和getopt()命令,並且我需要使用各種包含隨機字符(如“”)的輸入來調用腳本數百次=:等

因此,我需要能夠抑制錯誤輸出,或者檢測不平衡的引號,並在字符串的末尾附加'或“。我發現此正則表達式可以檢測單引號和雙引號的字符串:

PHP:正則表達式忽略引號內的轉義引號

但是我在可視化如何對包含引號和未引號參數的常規bash命令執行此操作時遇到麻煩。 是否有內置命令可以告訴我該字符串是否可接受而不會引發錯誤? 然后我可以嘗試附加“”“或”“”,我很確定它們中的一個會關閉字符串。我現在只關心防止錯誤消息,因為我只是在這里拋出隨機輸入此時的腳本。

謝謝!

子Shell進程正在將錯誤消息寫入STDERR,它是從父PHP進程繼承的。 您可以在運行shell_exec()之前在PHP腳本中關閉父級的STDERR文件句柄。

<?php
fclose (STDERR);
shell_exec('"');

暫無
暫無

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

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