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 192.168.11.1
を追加、シェルを実行できず、^M が多すぎることがわかります。
を解決するにはどうすればよいですか?
-----解決策---------
歴史的な質問
の場合は、サーバー システムで標準の改行文字を使用するだけです。定数 PHP_EOL