ホームページ  >  記事  >  バックエンド開発  >  PHP はデータを書き込んでシェル ファイルを形成し、^M を削除します

PHP はデータを書き込んでシェル ファイルを形成し、^M を削除します

WBOY
WBOYオリジナル
2016-06-13 13:22:171455ブラウズ

PHP はシェル ファイルを形成するファイルを書き込み、^M
PHP コードを削除します:


$file_name = '/srv/cfg/sysnetwork.cfg';

$sysnetwork_str = "#!/bin/shnr";

if($_REQUEST['mgt_ip']&&$_REQUEST['mgt_netmask']){
$sysnetwork_str .= '/sbin/ifconfig mgt '。 $ _REQUEST['mgt_ip'].' ネットマスク '.$_REQUEST['mgt_netmask']."nr";
}
if($_REQUEST['ext_ip']&&$_REQUEST['ext_netmask']){
$sysnetwork_str .='/sbin/ifconfig ext '.$_REQUEST['ext_ip'].' ネットマスク '.$_REQUEST['ext_netmask']."nr";
}
if($_REQUEST [ 'gateway']){
$sysnetwork_str .= '/sbin/route デフォルト gw '.$_REQUEST['gateway'];
}

$write_rs=file_put_contents($file_name, $ sysnetwork_str);



改行ユーザーの nr
によって形成されたファイルは次のとおりです:
#!/bin/sh
^M/sbin/ifconfig mgt 192.168 .2.45 ネットマスク 255.255.255.0
^M/sbin/ifconfig ext 192.168.2.99 ネットマスク 255.255.255.0
^M/sbin/route デフォルトの gw 1​​92.168.11.1


を追加、シェルを実行できず、^M が多すぎることがわかります。

を解決するにはどうすればよいですか?

-----解決策---------
歴史的な質問

の場合は、サーバー システムで標準の改行文字を使用するだけです。定数 PHP_EOL

を使用できます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。