【PHP】下らねぇ質問はここに 9

PHPに関する質問スレです

前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 8
http://mevius.5ch.net/test/read.cgi/tech/1489506082/

次スレは>>980以降
本文の1行目に以下を追加すること
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

関連リンク
■PHPマニュアル    http://www.php.net/manual/ja/
■日本PHPユーザ会  http://www.php.gr.jp/
■PHPNG        https://wiki.php.net/phpng
■メーリングリスト   http://ml.php.gr.jp/mailman/listinfo/

(以下英語)
■公式リポジトリ     http://git.php.net/
■PHP-RFC       https://wiki.php.net/rfc
■PECL          http://pecl.php.net/
■Composer       https://getcomposer.org/
■Packagist        https://packagist.org/
■Zend Tech. Ltd.    http://www.zend.com/

フレームワーク(一部)
■Zend Framework   https://framework.zend.com/
■Symfony        https://symfony.com/
■Laravel         https://laravel.com/
■CodeIgniter       https://codeigniter.com/
■Yii            http://www.yiiframework.com/
■FuelPHP        https://fuelphp.com/
■CakePHP        https://cakephp.org/

テンプレートエンジン(一部)
■Twig           https://twig.symfony.com/
■Blade          https://laravel.com/docs/5.1/blade

evernoteのENEXファイルをパースする処理を書いていますが

$str = '<?xml version="1.0" encoding="UTF-8"?>
<en-note><div>てすと</div><div>てすと</div></en-note>';


$xml = simplexml_load_string($str);


var_dump($xml);

とすると
object(SimpleXMLElement)#1 (1) {
["div"]=>
array(2) {
[0]=>
string(9) "てすと"
[1]=>
string(9) "てすと"
}
}
となり、en-note要素がどこかにいってしまいます
en-noteを取り出してasXML()したいのですが、
何故かsimplexmlオブジェクトの中にありません
en-noteという名前が悪いのかと思ってdivとかhとかにしてみましたが
それでも一番外側の要素はsimplexmlオブジェクトに入っていません
何故こうなるのでしょうか?

4デフォルトの名無しさん (アウアウウー Sa8f-BQEm)2018/01/08(月) 13:03:30.26ID:4m/0uKGZa
>>3
これ消えているのではなくて、
一番外側のオブジェクトがまさにそれですね?
xmlタグが一番外側の要素で、
その次のタグがその子要素になると思い込んでいました

shell_execなどは、mod_phpから実行した時には
何か制限を受けるのでしょうか?
echo shell_exec('"C:/Program Files (x86)/Evernote/Evernote/ENScript.exe" exportNotes /q "ほにゃらら"');
これでevernoteのノートを出力出来るはずなのですが
mod_phpから呼び出した時には何も表示されません
コマンドラインから呼び出すと普通に表示されます
echo shell_exec('cd')
のように単純なコマンドで試すと、mod_phpでも問題なく実行されています
メモリ制限の問題かと思ってmemory_limitを-1にしても何も変わりません

>>5についてですが
外部実行ファイルはドキュメントルート下に置かないと実行できないみたいな情報があったので
ENScript.exeを呼び出すバッチファイルをドキュメントルートに置いて実行してみましたが駄目でした
mod_phpからwhoamiを実行すると
nt authority\systemという権限で動いていることが分かりました
この権限が制限を実現しているのでしょうか?

また、セーフモードではありません
外部プログラムの制限についてドキュメントに書いていないのが解せません…
Windows版だけの現象なのでしょうか

Evernoteとか使ったことないから知らんけど, その実行者の権限で見える, 見えてよい或いは見えるべきものを扱ってんの?

Evernoteは非常に個人的なものなので、
確かにウェブサーバからデータが見えたらどうなのかっていうのはありますね
自分用アプリを作るためにApacheとブラウザを使っていましたが
本来ウェブサーバはネットに公開するためのものなので
権限が低くされるのも当然といえば当然。
そう考えるとウェブサーバを使ったアプリ構築を脱却して
Electronとかを使って作った方がいいですね
ありがとうございました

10デフォルトの名無しさん (ワッチョイ 1fae-nOrU)2018/01/10(水) 13:35:01.59ID:70pYzGse0
include先での$_POSTの参照について質問です。
index.html(httpd.confいじってhtmlファイルでもphp使えるようにしてる)からfile1.phpをincludeし、file1.phpの中でfile2.phpをincludeしています。(処理の関係上そうしたい)

index.htmlにPOSTがあった場合に、file1.phpでは$_POSTを参照出来るのですが、file2.phpからは何故か出来ません。
index.htmlで直接file2.phpをincludeするとPOSTの参照は出来ます。

そこら辺のルールに詳しい方いましたら解説していただけないでしょうか。よろしくお願いします。

11デフォルトの名無しさん (ワッチョイ 6661-QpsD)2018/01/13(土) 10:49:54.90ID:By98rTnD0
$_POSTに上書きしちゃってる可能性

12デフォルトの名無しさん (ワッチョイ 85c3-3Ttg)2018/01/20(土) 00:15:59.55ID:MzOH7w6y0
ドがつく素人です。
しょーもない質問ですいません。

【困りごと】
ドキュメントルートにphpinfo関数を実行するファイルを作成したが、
ブラウザ上でうまく表示されない。(スクリプトの記述のまま表示されてしまう)

【状況】
ApacheとPHPをインストールしたんですが、
以下URLのようにphpinfoコマンドで記述したphpを、
ドキュメントルートに入れて、http://localhost/phpinfo.php
実行したのですが、

<?php
phpinfo();
?>

と、スクリプトの記述そのまま表示されてしまいます。
何か設定ミスだとは思うのですが、なかなか原因が分からず・・・・

【URL】
https://i-bitzedge.com/php/how-to-use-phpinfo

13デフォルトの名無しさん (ワッチョイ 755d-GP+B)2018/01/20(土) 01:00:58.30ID:6KDbA8qD0
XAMPPじゃなくてApacheとPHPを個別に手でインストールしたのか?
手でインストールするならApache側の設定を修正してPHP用モジュールをロードする必要があるぞ

何か今になってもXAMPPやらApacheやらの導入を最初にやらせるサイト結構あるけど, きちんとしたWebサーバが本当に必要になるまではPHPのビルトインサーバが楽でいいよ

http://php.net/manual/ja/features.commandline.webserver.php

14デフォルトの名無しさん (ワッチョイ 0b80-H9dj)2018/01/20(土) 01:12:47.90ID:6q5j1Hcg0
>>5-9
その書き方で、notepad は、起動できるのか?

もし起動できるのなら、ENScript.exe に与える引数がおかしいのかも

15デフォルトの名無しさん (ワッチョイ 559f-x16F)2018/01/20(土) 01:32:09.29ID:bSTKludV0
>>12
ちな俺はXAMPP/Windowsで使っているけど、最初からPHPは使えた。
(もちろん13の言うとおり、最初から設定してあるという意味で)

一般論になるが、環境の立ち上げはずぶの素人だと辛い。
(はまった場合に回避できない)
だから13の言っていることは正しくて、知らないのならまずはお手軽環境でやったほうがいい。
XAMPPも十分お手軽だし俺はいいと思うけどね。
最初からガチ鯖で、というのも一理あるのだが、それは後付けの意見でしかないことも多い。

16デフォルトの名無しさん (ワッチョイ 0b96-Qbx4)2018/01/20(土) 10:53:53.90ID:bpfiGwqM0
初めてc#でプログラミング始めたんですが、
Visual studioを使ってると頻繁に行末に移動する「end」やカーソルキーを使いたくなるけど、
ショートカットってないんでしょうか?
nemacsとかだとctrl+eとかで行末に移動してくれたようなおぼろげな記憶があるんですけど。

17デフォルトの名無しさん (ワッチョイ 0b96-Qbx4)2018/01/20(土) 10:54:20.52ID:bpfiGwqM0
ほんとくだらない質問ですいません。
ググったけどショートカット見つからなかったもので。

スレタイ読めねぇほどバカなのか

19デフォルトの名無しさん (ワッチョイ 5dd2-k4Q3)2018/01/22(月) 17:07:06.70ID:YXQIUh040
>>12
AddHandler とかFilesMatch とかが
コメントになってるだろう
AddHandlerはファイルを特定する方法が甘いから使い方注意だが

20デフォルトの名無しさん (ワッチョイ 27e9-7ZJK)2018/01/26(金) 16:45:32.90ID:aV9eTo+Y0
よくあるファイルアップロードフォームと受け取り側PHPの構成なんですが、
アップロードされたファイル名がマルチバイトだと文字化け・・・というより、「あ.txt」なら「あ.txt」
となってしまいます。

Windows + XAMPP 環境ですが、

mb_convert_encoding($uploadfile, "SJIS", "auto");

mb_convert_encoding($uploadfile, "CP932", "auto");

を行っても結果は変わりません。
何かチェックすべき項目を見落としていると思うのですが、お助け下さい。

21デフォルトの名無しさん (ワッチョイ 27e9-7ZJK)2018/01/26(金) 16:47:17.43ID:aV9eTo+Y0
おうふ

「あ.txt」が「&#12354;.txt」(半角)となります。

22デフォルトの名無しさん (ワッチョイ 27e9-7ZJK)2018/01/26(金) 17:20:40.16ID:aV9eTo+Y0
自己解決しました。
これでいけますね。
mb_convert_encoding($uploadfile, "SJIS", "HTML-ENTITIES");

ところで、これって環境によって不要だったりするのですか?

23デフォルトの名無しさん (ワッチョイ ef99-fPTX)2018/01/27(土) 15:17:32.64ID:MzrwFkn+0
$a = [
[1, 5],
[9, 1],
[8, 2],
[1, 2],
];

みたいに宣言しているところがあって、これの2個目と3個目を変数で宣言したいわけよ


$a = [
[1, 5],
$b,
[1, 2],
];

みたいに。

この時 $b にはどういう入れ方すれば最初の形を再現してくれます?

無理じゃね

25デフォルトの名無しさん (ワッチョイ ef99-fPTX)2018/01/27(土) 17:00:21.87ID:MzrwFkn+0
やはりか

$b = [
 [9, 1],
 [8, 2],
];
にしちゃうと形変わっちゃうよな?

26デフォルトの名無しさん (ワッチョイ e365-4wfc)2018/01/27(土) 17:16:07.80ID:mUh+GRjL0
array_merge使うのがいいと思うが

27デフォルトの名無しさん (ワッチョイ 566a-grVD)2018/01/31(水) 21:00:18.89ID:68O1HbzJ0
Docコメントはツール使って書いてますか?
それとも使わず書いてますか?(*´ڡ`●)

28デフォルトの名無しさん (ワッチョイ bf6a-qmJt)2018/02/02(金) 20:59:07.10ID:angTjduf0
忘れてください(`・ω・´)ゞ

29デフォルトの名無しさん (ワッチョイ f72a-CNA0)2018/02/03(土) 19:45:51.02ID:bLLjGwhG0
画像アップロードする時に、1つのフォルダにアップロードするのではなく、
/年/月/ファイル名

とわける方法があります。(WordPressとか)

しかしこの場合、ファイルを編集(入れ替える)時に以下の処理が必要になります。

1:編集するファイルの登録日を取得
2:1のフォルダ内にファイルが存在するか確認
3:存在していたら削除する
4:更新日のフォルダを作成
5:4のフォルダにファイルをアップロード

この処理を行うと「登録日のフォルダにファイルがひとつも存在しない」
と言った可能性があり、空フォルダになります。

空のままにしたくない場合は
{他にファイルが存在しない場合はフォルダごと削除}
と言った処理も必要になります。

ファイルをDBで管理している場合は、何度もクエリーを投げる必要があり、
無駄が多い気がするのですが、いかがでしょうか?

30デフォルトの名無しさん (ワッチョイ 1781-hxSR)2018/02/03(土) 22:08:01.43ID:uf1OevP30
>>29
ファイル操作はDB更新とは別に出来るだろう
PHP単独でファイル存在チェック、削除、DIR操作、アップロードやって
DBは必要な事だけすれば良いんじゃないの?

31デフォルトの名無しさん (ワッチョイ 1774-2GDW)2018/02/03(土) 22:11:48.87ID:w5tgMa2Q0
Readに対してWriteの回数は極めて少ないと思えば大した問題ではないのでは

32デフォルトの名無しさん (ワッチョイ f72a-CNA0)2018/02/04(日) 00:58:09.63ID:e+yYqllI0
>>30-31
ご意見ありがとうございます。
WordPressとか他のCMSを見たのですが、
一度登録した画像を編集(作り直す)のは止めようと思います。
無駄が多いですし、ファイル操作で入れ替えるみたいな処理もおかしい気がして。
入れ替えるなら一旦削除してアップロードし直すのが通常だと思いますし

33デフォルトの名無しさん (ワッチョイ 57b3-ycng)2018/02/07(水) 20:59:50.48ID:MJqvUrQe0
例えば↓みたいなループがあったとして、<br>
error_logがなかったら0.001秒で処理が終わって、
ある場合は5秒くらいかかるんだけど、error_logって結構コストの掛かる処理なん?

for ($i = 0; $i < 100000; $i++) {
error_log("hoge");
}

ちなみに手元の環境はPHP7.2.0

34デフォルトの名無しさん (ワッチョイ 9dd2-7Au1)2018/02/08(木) 12:29:07.56ID:E75692Mg0
ログを実際にコンソールに出してるなら
その分遅くなる、もし出してるならファイルにリダイレクトしてみ

35デフォルトの名無しさん (ワッチョイ 8237-nHV3)2018/02/09(金) 21:42:53.67ID:DI5fWWyV0
すいません。
mysqliで接続されません。
dbサーバーとwebサーバーは同一です。
ワードプレスを導入しているのですが、そちらはインストールされて記事等もdbに入って更新も出来ます。
phpadminも入りました。

ただそれ以外のページからだと接続すらできてないです。(接続を行うとエラーも出ない上、phpが空白で表示される。echo等も死ぬ)

何か考えられる原因等ありますか?phpの権限とかですか?

36デフォルトの名無しさん (ワッチョイ 8237-nHV3)2018/02/10(土) 00:18:04.71ID:Yu/cvnD90
自己解決しました

37デフォルトの名無しさん (スップ Sdc2-nQD2)2018/02/13(火) 11:26:59.19ID:2Q2AHgA2d
質問させてください。
JWTを使いたいです。
HTTPでリクエストして、レスポンスとしてJSON形式のテキストを受け取る際の署名にJWTを用いたいです。
JSONに電子署名をして、URL-safeな文字列にする手順の規約、と言うのは分かりましたが具体的にはどうすればそうなるのか分かりません。
署名する処理は JwtHS256Encodeメソッド でやりたいです。
hash_hmac()は使ったことがあります。
具体的なソースコードなど提示してくれるとありがたいです。
とんちんかんなことを言っていたらすみません。
よろしくお願いします。

38デフォルトの名無しさん (ワッチョイ 3174-jA6l)2018/02/13(火) 12:03:56.31ID:cOH/iFjL0

39デフォルトの名無しさん (スップ Sdc2-nQD2)2018/02/13(火) 12:49:59.79ID:2Q2AHgA2d
>>38
ありがとうございます!
まだ試してないんですが、軽く目を通したところdownloadの文字があるので何かしらのファイルをダウンロードしてどっかのディレクトリに置いておいてその都度呼び出して使う、みたいな感じのものなんですかね?
とりあえず一回色々やってみます!

>>39
とりあえずcomposerでググれ

4137 (ワッチョイ 2205-EuZI)2018/02/14(水) 21:58:29.96ID:TtACcl/J0
簡単ではありますが報告を。
composer使ってphp-jwtインスコして>>38のサンプルにrequire_onceでjwt.php指定して
でecho $jwtしてやったら暗号的な英数字がだだーっと出たので使い方はわかった気がしてます。

42デフォルトの名無しさん (ワッチョイ 3174-jA6l)2018/02/14(水) 22:25:21.84ID:X6WT15xX0
composer使うならvendor/autoload.phpをrequireすればよかろう

43デフォルトの名無しさん (ワッチョイ f7e0-T3WU)2018/02/16(金) 06:19:14.89ID:W1XJdyx10
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆

44デフォルトの名無しさん (ワッチョイ ae3b-x4Or)2018/02/22(木) 22:26:42.20ID:JaCEqDtL0
switch-case文について質問です。
通常こういった条件式は自分で書いていくと思うのですが、このcaseリストを
ここより前に定義して動的にcaseを増やしていくことは可能でしょうか?

switch ($i) {
case "A";
break;
case "B;"
break;

}の
caseを一か所に記述して(A,B,C,D,…)と後から編集したらcaseの部分も動的に記述されたことになる
というのは可能ですか?ということです

なんと表現したらいいかわからないのでわかりにくいと思うのですが、
わかるかたおられましたらご教授ください。

45デフォルトの名無しさん (ワッチョイ 7974-x4Or)2018/02/23(金) 00:16:33.70ID:heeL5/0a0
何でそんなことが可能だと思ったのかご説明頂けるかな?

何がしたいのか分からんけどエスパーするとそういうことはState/Strategyパターン使ったらええんちゃう

46デフォルトの名無しさん (ワッチョイ 0e81-snzV)2018/02/23(金) 00:42:42.74ID:kCRA+Aya0
エディタなり開発するフレームワーク側で補完してくれるかと聞いているのかな

47デフォルトの名無しさん (ワッチョイ 019f-SJjx)2018/02/23(金) 00:46:17.66ID:Hlk4jzyw0
>>45
Java鹿は死ねよ。欠陥言語使っているからそんな発想しか出来なくなる。

>>44
それは関数ポインタをハッシュに入れてcaseのところで引くんだよ。

新着レスの表示
レスを投稿する