/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
DOS newlines (CR/LF) to Unix format
Fra : Bjarne Jensen


Dato : 19-01-11 13:23

Jeg fandt denne stump et sted på nettet

# IN UNIX ENVIRONMENT: convert DOS newlines (CR/LF) to Unix format
awk '{sub(/\r$/,"");print}' # assumes EACH line ends with Ctrl-M

Den er testet OK på kommandolinien så jeg skrev sådan i et php script:

- - -
$unix = ".unix";

foreach (glob($usedir."[12_]*") as $filename) {
exec('awk { sub("\r$", ""); print } $filename > $filename.$unix');
}
- - -

Men den dutter ikke!

Hvorfor?


/Bjarne

 
 
Martin Larsen (19-01-2011)
Kommentar
Fra : Martin Larsen


Dato : 19-01-11 14:09

Bjarne Jensen wrote:

> Men den dutter ikke!
>
> Hvorfor?

Hvis det virker på kommandolinjen må du jo have awk installeret, men
spørgsmålet er så om du har tilladelse til at udføre systemkommandoer
fra php.

Tjek også om $filename i det hele taget indeholde det rigtige.

Uanset hvad kan du gøre det samme i php;

$DOS = "bla bla bla";
$UNIX = str_replace("\r","",$DOS);

Find selv ud af hente og gemme den modificerede fil osv.

Men hvorfor vil du i det hele taget gøre det i php?

Martin

Bjarne Jensen (20-01-2011)
Kommentar
Fra : Bjarne Jensen


Dato : 20-01-11 13:18

On 2011-01-19 14:08, Martin Larsen wrote:

> Hvis det virker på kommandolinjen må du jo have awk installeret, men
> spørgsmålet er så om du har tilladelse til at udføre systemkommandoer
> fra php.

User er 'www-data' - hvilke permissions skal 'www-data' ha' / hvordan
skal man ændre det?

> Tjek også om $filename i det hele taget indeholde det rigtige.

Det gør den!

> $UNIX = str_replace("\r","",$DOS);

Det kan godt være det bliver det nemmeste.

> Men hvorfor vil du i det hele taget gøre det i php?

Det ville unægtelig være nemmere at scripte sig gennem men det skal
kunne bruges af andre end mig når jeg ikke lige er tilstede. Og de ved
mindre end jeg om IT.

/Bjarne

scootergrisen (19-01-2011)
Kommentar
Fra : scootergrisen


Dato : 19-01-11 14:57

Prøv og slå fejl rapportering til så du kan få fejl beskeder.

error_reporting(-1);
ini_set('display_startup_errors', 'on');
ini_set('display_errors', 'on');

og brug :

exec() || die("exec() fejlede");

eller:

exec() || trigger_error("exec() fejlede");


Så får du besked.



Leif Neland (20-01-2011)
Kommentar
Fra : Leif Neland


Dato : 20-01-11 13:35

Den 19-01-2011 13:23, Bjarne Jensen skrev:
> Jeg fandt denne stump et sted på nettet
>
> # IN UNIX ENVIRONMENT: convert DOS newlines (CR/LF) to Unix format
> awk '{sub(/\r$/,"");print}' # assumes EACH line ends with Ctrl-M
>
> Den er testet OK på kommandolinien så jeg skrev sådan i et php script:
>

Det er måske lettere at få dette til at virke?
---8<--------------------------------
The suite of utilities known as DosUnix provide a selection of features
allowing manipulation of text files in a mixed DOS/Windows and Unix
environment.

The three utilities are:

- dosunix, which creates a copy of a DOS text file in Unix text format;
- unixdos, which creates a copy of a Unix text file in DOS text format;
- chktxt, which inspects a given text file to determine whether it is in
DOS text format or Unix text format.

WWW: http://dosunix.sourceforge.net/
---8<--------------------------------
Eller
tofrodos - Converts DOS <-> Unix text files, alias tofromdos

DOS text files traditionally have CR/LF (carriage return/line feed)
pairs as their new line delimiters while Unix text files traditionally
have LFs (line feeds) to
terminate each line.

Tofrodos comprises one program, "fromdos" alias "todos", which converts
text files to and from these formats. Use "fromdos" to convert DOS text
files to the Unix format,
and "todos" to convert Unix text files to the DOS format.

This functionality is also available via the dos2unix/unix2dos symlinks.
---8<----

Leif


Bjarne Jensen (20-01-2011)
Kommentar
Fra : Bjarne Jensen


Dato : 20-01-11 14:45

On 2011-01-20 13:35, Leif Neland wrote:
>
> The three utilities are:
>
> - dosunix, which creates a copy of a DOS text file in Unix text format;
> - unixdos, which creates a copy of a Unix text file in DOS text format;
> - chktxt, which inspects a given text file to determine whether it is in

Jeg har åbenbart et eller andet problem med hvad user 'www-data' har
og/eller hvordan skal man ændre det.

/Bjarne

Leif Neland (20-01-2011)
Kommentar
Fra : Leif Neland


Dato : 20-01-11 21:10

Den 20-01-2011 14:44, Bjarne Jensen skrev:
chktxt, which inspects a given text file to determine whether it is in
>
> Jeg har åbenbart et eller andet problem med hvad user 'www-data' har
> og/eller hvordan skal man ændre det.
>

www-data har ikke en user, www-data ER en user.

Leif
--
Bevar P2, luk P3, der er nok P3'er i forvejen.

Bjarne Jensen (22-01-2011)
Kommentar
Fra : Bjarne Jensen


Dato : 22-01-11 02:12

On 2011-01-20 21:10, Leif Neland wrote:
> Den 20-01-2011 14:44, Bjarne Jensen skrev:
> chktxt, which inspects a given text file to determine whether it is in
>>
>> Jeg har åbenbart et eller andet problem med hvad user 'www-data' har
>> og/eller hvordan skal man ændre det.
>>
>
> www-data har ikke en user, www-data ER en user.
>
> Leif

Naturligvis - det gik lidt hurtigt og så blev det rent volapyk.

Sådan:

Jeg har åbenbart et eller andet problem med hvad user 'www-data' har
af permissions og/eller hvordan skal man ændre det.

Men det har jeg så efterfølgende fundet ud af er forkert: 'www-data' kan
exce(awk...) som den er - der er mig der ikke kan finde ud af awk og
hvilke paremeter der skal skrives og hvordan når det skal gøres fra php.

Anyways, en anden usenet bruger gav mig denne stump og den løser til
fulde mit problem:

file_put_contents($filename.$unix, str_replace("\r", "",
file_get_contents($filename)));


Tak for indsatsen!

/Bjarne

Søg
Reklame
Statistik
Spørgsmål : 177414
Tips : 31962
Nyheder : 719565
Indlæg : 6407849
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste